我试图让嵌套列表工作,但问题是每当我附加一个变量时它与第一个变量相同。
array = [[1,0]]
index = 1
for stuff in list:
array.insert(0,array[0])
array[0][0]+=1
index += 1
if index == 5:
break
print(array)
返回[[5,0],[5,0],[5,0],[5,0],[5,0]]
奇怪的是,如果我要将列表变成一个int它会起作用。
array = [1]
index = 1
for stuff in array:
array.insert(0,array[0])
array[0]+=1
index += 1
if index == 5:
break
print(array)
这个返回[5,4,3,2,1]
对于我写的程序,我需要记住两个数字。我应该放弃将其列为一个列表,还是应该将其分为两个整数或一个元组?它甚至可以用列表吗?
我将列表更改为数组相同的概念
答案 0 :(得分:0)
那是因为这一行
list.insert(list[0])
这总是引用列表[0]并在你在for循环中所做的所有插入中引用。
整数列表和列表列表的行为方式不同。
另外,请提及您的预期输出。
答案 1 :(得分:0)
只是跟进文档中的解释:
Python中的赋值语句不会复制它们创建的对象 目标与对象之间的绑定。
因此,每当您想要复制包含其他对象的对象时,例如您的列表包含整数或类如何包含其他成员,您应该知道这种差异(也来自文档):
- 浅复制构造一个新的复合对象,然后(尽可能)将引用插入到中找到的对象中 原文。
- 深层复制构造一个新的复合对象,然后以递归方式将副本插入到原始对象中找到的对象。
要实现深层复制,正如您在这种情况下尝试的那样,如果您使用的是Python 3.3或更高版本,则可以使用Python的内置列表复制方法:
deepcopy = list.copy()
或者将copy
模块用于较低版本的Python,其中包含一个copy.deepcopy()函数,该函数返回列表(或任何其他复合对象)的深层副本。