Python 嵌套列表还是变量列表?
我试图使嵌套列表工作,但问题是,每当我附加变量时,它与第一个变量相同Python 嵌套列表还是变量列表?,python,list,python-3.x,Python,List,Python 3.x,我试图使嵌套列表工作,但问题是,每当我附加变量时,它与第一个变量相同 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]] 奇怪的是,如果我把列表变成一个整数,它会工作的
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]]
奇怪的是,如果我把列表变成一个整数,它会工作的
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]
对于我正在编写的程序,我需要记住两个数字。我应该放弃把它做成一个列表,还是把它做成两个整数,甚至一个元组?还有,甚至可以使用列表吗
由于这一行,我将列表更改为相同的数组概念
list.insert(list[0])
这总是引用列表[0],并在for循环中执行的所有插入中引用
整数列表和列表列表的行为不同
此外,请提及您的预期输出。接下来,请从文档中进行解释: Python中的赋值语句不复制对象,而是创建 目标和对象之间的绑定 因此,每当您想要复制包含其他对象的对象时,例如您的列表包含整数或类如何包含其他成员,您都应该了解这一差异(也可以从文档中了解):
- 浅复制构造一个新的复合对象,然后(尽可能)向其中插入对
原著 - 深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中
deepcopy=list.copy()
或者在Python较低版本中使用该模块,该模块包含一个copy.deepcopy()函数,该函数返回列表(或任何其他复合对象)的深度副本。不要将内置键名用作变量名。这将导致代码不一致和程序的意外行为。list.insert(index,list[0][:])是的,我的代码是list.insert(0,list[0])不是list.insert(list[0])键入了一个错误,也没有使用
list
作为变量名。谢谢,我在[:]列表中输入后它就起作用了。insert(0,list[0][:])用这行代替你的行