我需要用list“input\u array”的元素更新list“array”的第一个元素。 问题: 如果列表“array”是由type2创建的,那么它可以正常工作(每次迭代都会替换元素)。 如果数组是由Type1创建的,那么所有元素在每次迭代中都会更新。你知道吗
#TYPE1
#----------
array=[]
array_elem=['0.0']
for i in range(3):
array.append(array_elem)
print array
#TYPE2
#-------
array=[['0.0'],['0.0'],['0.0']]
print array
input_array=['35.0', '20.0', '15.0']
array_position=0
for elem in range(len(input_array)):
array[elem][array_position]=str(input_array[elem])
print "result",array
output with Type1:
[['0.0'], ['0.0'], ['0.0']]
[['0.0'], ['0.0'], ['0.0']]
result [['35.0'], ['35.0'], ['35.0']]
result [['20.0'], ['20.0'], ['20.0']]
result [['15.0'], ['15.0'], ['15.0']]
output with Type2:
[['0.0'], ['0.0'], ['0.0']]
[['0.0'], ['0.0'], ['0.0']]
result [['35.0'], ['0.0'], ['0.0']]
result [['35.0'], ['20.0'], ['0.0']]
result [['35.0'], ['20.0'], ['15.0']]
我需要第二类的结果。。但是主数组将像Type1中那样动态创建。 两种创建列表的方法有什么区别?你知道吗
提前谢谢
type1示例创建对数组元素的引用。因此,当数组元素从一个引用更改时,所有引用都会更改。type1场景的简化版本如下:
但是type2示例有单独的数组元素副本:
您可以考虑对代码使用列表理解。下面两个示例创建数组元素的副本,它与您想要的type2示例相匹配。你知道吗
或:
您的type1示例与下面的速记相同。此代码将创建对数组元素的引用:
此代码:
将相同的列表放入
array
三次。要放置列表的副本,请使用切片:当你说:
你在复制中的相同引用。你知道吗
如果你改写了
问题就会消失。如果您需要使用一个变量来初始化数组,那么请使用它的一个副本,即。数组.append(复制。复制(数组元素)。见副本库文件。你知道吗
相关问题 更多 >
编程相关推荐