首页 > 解决方案 > python中的append方法在嵌套for循环中没有按预期工作

问题描述

我想使用嵌套的 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]]

标签: pythonlistloopsappendnested-loops

解决方案


如果您在http://pythontutor.com/上运行您的代码,那么您会看到

在此处输入图像描述

列表中的所有元素都ls引用同一个列表numbers,这会产生问题。

您必须numbers = [0,0]for-loop内创建新列表

for num1 in range(3):
    for num2 in range(2):
        numbers = [0,0]
        numbers[0] = num1
        numbers[1] = num2
        ls.append(numbers)

或者干脆不做numbers

for num1 in range(3):
    for num2 in range(2):
        ls.append([num1, num2])

推荐阅读