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中的赋值语句不复制对象,而是创建 目标和对象之间的绑定

因此,每当您想要复制包含其他对象的对象时,例如您的列表包含整数或类如何包含其他成员,您都应该了解这一差异(也可以从文档中了解):

  • 浅复制构造一个新的复合对象,然后(尽可能)向其中插入对
    原著
  • 深度副本构造一个新的复合对象,然后递归地将在原始副本中找到的对象的副本插入其中
要实现深度复制,正如您在这种情况下尝试的那样,如果您使用的是Python 3.3或更高版本,则可以使用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][:])用这行代替你的行