Python:结构的所有元素都会随着一个人的变化而变化

标签 python arrays list mutability

<分区>

我不明白为什么会发生以下情况。 Python 2.7.2

parinfo = [{'limited':[0,0], 'limits':[0.,0.]}] * 3 
parinfo[2]['limited'][0] = 1
parinfo[2]['limited'][0] = 1

parinfo 
[{'limited': [1, 0], 'limits': [0.0, 0.0]},
{'limited': [1, 0], 'limits': [0.0, 0.0]},
{'limited': [1, 0], 'limits': [0.0, 0.0]}]

最佳答案

parinfo = [{'limited':[0,0], 'limits':[0.,0.]}] * 3 

上面一行,它创建了一个,而不是创建 3 个不同的字典对象;列表中的所有项目都引用同一个字典。

你需要这样做来创建 3 个独立的字典:

parinfo = [{'limited':[0,0], 'limits':[0.,0.]} for i in range(3)]

关于Python:结构的所有元素都会随着一个人的变化而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42334634/

相关文章:

python - 在 mac 上安装 MySQL-python

python - 如何使用 python - selenium 截屏?

javascript - 在 JavaScript 中检查 "undefined"上的数组项

c - C 中的字符串搜索操作

python - 在列表中查找平均值,并在 Python 中返回结果分数超过平均值

Python Mock - 模拟几个打开

python - 序列化和反序列化 Django 枚举字段以接受数字和文本表示

ruby - `each_with_object(Hash.new([]))` 是如何工作的?

java - 如何用 switch 语句替换嵌套的 if 语句?

python - 从列表中的对象中删除字节顺序标记