python - 列表矩阵 - Python

标签 python list python-2.7 python-3.x matrix

<分区>

我想创建一个列表矩阵,但是当我在矩阵内部创建列表时,它创建了一个链表,我不需要它。

A=[[{}]*3]*3
result: [[{}, {}, {}], [{}, {}, {}], [{}, {}, {}]]
A[0][2]['h1']=1
result: [[{'h1': 1}, {'h1': 1}, {'h1': 1}],
 [{'h1': 1}, {'h1': 1}, {'h1': 1}],
 [{'h1': 1}, {'h1': 1}, {'h1': 1}]]

谁知道如何避免这种情况?我需要在矩阵的每个字段内有一个列表。

最佳答案

您正在使用对同一个列表的 3 个引用来初始化 A,并且每个列表都使用对同一个字典的 3 个引用进行初始化。相反,尝试为每个子列表和字典显式调用构造函数:

>>> A = [ [{} for _ in range(3) ] for _ in range(3) ]
>>> A[0][2]['h1']=1
>>> A
[[{}, {}, {'h1': 1}],
 [{}, {}, {}],
 [{}, {}, {}]
]

作为旁注,"linked list"一般是指同名的数据结构,而不是你对同一个对象有多个引用的情况。

关于python - 列表矩阵 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238061/

相关文章:

python - 在 Python 中删除带有水印的图像上的黑色边框

python - 如何读取包含数组的文本文件并将其放入数组中? (Python)

python - 组合 3 个列表以创建字典列表

c# - 如何从列表中删除连续的重复项

python - 根据符号递增数字

python - 字典中字典的多个键值对

multithreading - 无限循环是基于目录中文件更改进行处理的最佳解决方案

python - 如何使用extract_links()从编码为 'gb2312'的网页中获取url

python - 连续递增子序列

python - numpy.where 在 pandas 数据帧中表现缓慢(2.5 小时)