我想使用嵌套for循环将一个列表附加到另一个列表中,但代码没有按预期工作
def apend():
ls = []
numbers = [0,0]
for num1 in range(3):
for num2 in range(2):
numbers[0] = num1
numbers[1] = num2
ls.append(numbers)
print(ls)
apend()
我希望输出是:[[0,0],[0,1],[0,2],1,0],[1,1],[1,2]]
但是我得到了这个输出:[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]
如果在http://pythontutor.com/上运行代码,则会看到
列表
ls
中的所有元素都保持对同一列表numbers
的引用,这就产生了问题您必须在
for
-loop内创建新的列表numbers = [0,0]
或者干脆不做
numbers
只需将数字更改为数字[:],您将获得预期的输出
ls.append(numbers)
表示您正在添加列表的引用。 因此,当列表更改时,所有Instance都会更改。 当您执行ls.append(numbers[:])
操作时,会附加一个数字副本您正在循环中添加名为number的列表。 只需添加一个新的列表对象,如下所示
顺便说一下,我想用列表理解这个函数
相关问题 更多 >
编程相关推荐