Python 追加更改列表的其他元素
将一个元素添加到历史记录列表时,它会根据我添加的元素更改其余元素Python 追加更改列表的其他元素,python,arrays,list,Python,Arrays,List,将一个元素添加到历史记录列表时,它会根据我添加的元素更改其余元素 inputt="^<<<" cordenadas=[0,0] historial=[] for i in inputt: if i == "^": cordenadas[0]+=1 elif i== "v": cordenadas[0]-=1 elif i== "<":
inputt="^<<<"
cordenadas=[0,0]
historial=[]
for i in inputt:
if i == "^":
cordenadas[0]+=1
elif i== "v":
cordenadas[0]-=1
elif i== "<":
cordenadas[1]-=1
elif i== ">":
cordenadas[1]+=1
historial.append(cordenadas)
print(historial)
这是由于Python中列表的易变性造成的
cordenadas
将始终指向同一项目-除非您创建新列表.append
时,它都会附加相同的列表尝试将
cordenadas=[0,0]
移动到for循环中,看看会发生什么。比较使用的两个程序的行为,以更好地了解Python引用的工作方式。input=“^input=“^是否要维护每个符号的移动列表或整体移动的聚合列表?
input = "^<<<"
historial = []
for i in input:
cordenadas = [0, 0]
if i == "^":
cordenadas[0] += 1
elif i == "v":
cordenadas[0] -= 1
elif i == "<":
cordenadas[1] -= 1
elif i == ">":
cordenadas[1] += 1
historial.append(cordenadas)
print(historial)
input = "^<<<"
historial = []
for i in input:
cordenadas = [0, 0]
if i == "^":
cordenadas[0] += 1
elif i == "v":
cordenadas[0] -= 1
elif i == "<":
cordenadas[1] -= 1
elif i == ">":
cordenadas[1] += 1
historial.append(cordenadas)
print(historial)
inputt="^<<<"
cordenadas = [0,0]
historial=[]
for i in inputt:
# declare a new list which contans 'cordenadas' values
coord = [cordenadas[0],cordenadas[-1]]
if i == "^":
coord[0]+=1
elif i== "v":
coord[0]-=1
elif i== "<":
coord[1]-=1
elif i== ">":
coord[1]+=1
# save the changes in the original list
cordenadas = coord
historial.append(coord)
print(historial)