python - Python - 在数组数组中设置值
问题描述
我有以下功能:
def set_x(self,index1, index2, val):
print('Setting X with index1 : ' + str(index1) + ' , index2 : ' + str(index2) + ' with value : ' + str(val))
print(self.x)
self.x[index1][index2] = val
print(self.x)
print('hehe')
例如,我用参数 0、1 和 785 调用它。实际输出如下:
Setting X with index1 : 0 , index2 : 1 with value : 785
[[305, 665], [305, 665]]
[[305, 785], [305, 785]]
我期待它是:
Setting X with index1 : 0 , index2 : 1 with value : 785
[[305, 665], [305, 665]]
[[305,785],[305,665]]
就像我的任务是设置数组中所有数组的所有第二个元素。我将如何解决它?
解决方案
可能是因为 self.x 中的两个列表引用了同一个列表。这取决于您最初是如何创建 x 的。看这个例子
a=[305,665]
x = []
x.append(a)
x.append(a)
x[0][1]=3
print(x)
#[[305, 3], [305, 3]]
当您设置值 ox x[0][1] 时,您真正要做的是更改 a[1] 的值,因此两个列表都在更改。您应该改用列表的副本。
from copy import deepcopy
a = [305, 665]
x = []
x.append(deepcopy(a))
x.append(deepcopy(a))
x[0][1] = 3
print(x)
#[[305, 3], [305, 665]]
推荐阅读
- python - 在列中跨多个组查找重复项 - Python
- java - Tomcat 应用程序的内存分析
- amazon-web-services - 在 Cloud Formation 中创建网络负载平衡时出错
- azure - 未找到连接插件“packer”
- python - 保存 CSV 文件的问题如何在 python pandas 中解决这个问题?
- javascript - 反应:onBlur 处理程序/回调未按预期工作-同时调用函数和函数作为参考
- java-8 - 如何从流中检索过滤值并使用它
- css - CSS 断点选择器被 SASS 覆盖的问题
- python - 在 Python 中使用模拟对象调用真实方法
- excel - 如何使用 openpyxl 写入现有的 excel 文件,同时保留数据透视表