Python 将列表附加到列表时出现意外输出
这是我试图解决的问题的代码的一个非常精简的版本 我尝试使用print(x)调试代码。但我不明白为什么世界上的[6,1]会一再地附加到“协调”上。任何帮助都将因其黄金重量而感激Python 将列表附加到列表时出现意外输出,python,python-3.x,Python,Python 3.x,这是我试图解决的问题的代码的一个非常精简的版本 我尝试使用print(x)调试代码。但我不明白为什么世界上的[6,1]会一再地附加到“协调”上。任何帮助都将因其黄金重量而感激 obstaclecordinates=[] 坐标fattack=[] n=5 x=[1,1] 当x不在障碍物中时: 坐标fattack.append(x) x[0]+=1 打印(x) 如果x[0]>n: 打破 其他: 持续 打印(协调FATTACK) 预期产出:[[1,1]、[2,1]、[3,1]、[4,1]、[5,1]
obstaclecordinates=[]
坐标fattack=[]
n=5
x=[1,1]
当x不在障碍物中时:
坐标fattack.append(x)
x[0]+=1
打印(x)
如果x[0]>n:
打破
其他:
持续
打印(协调FATTACK)
预期产出:[[1,1]、[2,1]、[3,1]、[4,1]、[5,1]、[6,1]]
实际输出:[[6,1],[6,1],[6,1],[6,1],[6,1]。如评论中所述,您不断修改附加的列表。您需要在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)
您不断修改附加的列表。请尝试:
CoordinationFattack.append(x[:])
来追加列表的副本。为什么会出现问题?那么x[:]做什么呢?谢谢你x[:]
是列表的副本x
。一个浅薄的副本。明白了!!!非常感谢!!是 啊事实上,由于一些愚蠢的原因,我不能在6分钟前接受,而这已经超过了我在印度的就寝时间!干杯