将列表附加到lis时出现意外输出

2024-06-11 06:43:20 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我试图解决的问题的代码的一个非常精简的版本

我尝试使用print(x)调试代码。但我不明白为什么世界上的[6,1]会一再地附加到“协调”上。任何帮助都将因其黄金重量而感激

obstaclecoordinates=[]
coordinatesofattack=[]
n=5
x=[1,1]
while x not in obstaclecoordinates:
    coordinatesofattack.append(x)
    x[0]+=1
    print(x)
    if x[0]>n:
        break
    else:
        continue
print(coordinatesofattack)

预期产出:[[1,1]、[2,1]、[3,1]、[4,1]、[5,1]、[6,1]]

实际输出:[[6,1],[6,1],[6,1],[6,1],[6,1]]


Tags: 代码in版本if世界not精简print
1条回答
网友
1楼 · 发布于 2024-06-11 06:43:20

如注释中所述,您不断修改附加的列表。您需要在while循环中创建一个副本

obstaclecoordinates=[]
coordinatesofattack=[]
n=5
x=[1,1]
while x not in obstaclecoordinates:
    coordinatesofattack.append(x[:])
    x[0]+=1
    print(x)
    if x[0]>n:
        break
    else:
        continue
print(coordinatesofattack)

相关问题 更多 >