当我根本不更新 jaunts 时,为什么 jaunts 的值(特别是第一个值)会发生变化?我只是在更新 'o'
Why does the vale of jaunts (specifically the 1st value) change when I'm not updating jaunts at all? I'm just updating the 'o'
start = [2020,0,0,2020]
jaunts = [[2020,0,0,2021],[2021,0,0,2022],[2022,0,0,2023],[2020,1,1,2023],[2021,0,0,2023]]
def gridneighbors(start,jaunts):
neigh = []
for o in jaunts:
new_cell = o
if start[0]==o[0] and (start[1] == o[1] and start[2] == o[2]):
new_cell[0]=o[3]
neigh.append(o)
elif start[3]==o[3] and (start[1] == o[1] and start[2] == o[2]):
o[3]=o[0]
neigh.append(o)
print(jaunts)
return neigh
print(gridneighbors(start,jaunts))
output:
[[2021, 0, 0, 2021], [2021, 0, 0, 2022], [2022, 0, 0, 2023], [2020, 1, 1, 2023], [2021, 0,
0, 2023]]
这是我得到的 jaunts 的值,第一个值在我什至没有更新的时候已经改变了。
当您将另一个变量分配给变量时,您实际上是在创建对同一列表的新引用,因此当您更改第二个变量中的某些内容时,您也会更改第一个变量,因为两者表示相同列表,例如:
first_list = [2020, 0,0, 2021]
second_list = first_list
second_list[0] = first_list[3]
print(first_list)
输出:
[2021, 0, 0, 2021]
与第一次迭代中 for 循环中发生的事情相同,您的 new_cell
和 o
变量实际上都是相同的 jaunted[0]
;当你在做 new_cell[0]=o[3]
你在做:jaunted[0][0] = jaunted[0][3]
start = [2020,0,0,2020]
jaunts = [[2020,0,0,2021],[2021,0,0,2022],[2022,0,0,2023],[2020,1,1,2023],[2021,0,0,2023]]
def gridneighbors(start,jaunts):
neigh = []
for o in jaunts:
new_cell = o
if start[0]==o[0] and (start[1] == o[1] and start[2] == o[2]):
new_cell[0]=o[3]
neigh.append(o)
elif start[3]==o[3] and (start[1] == o[1] and start[2] == o[2]):
o[3]=o[0]
neigh.append(o)
print(jaunts)
return neigh
print(gridneighbors(start,jaunts))
output:
[[2021, 0, 0, 2021], [2021, 0, 0, 2022], [2022, 0, 0, 2023], [2020, 1, 1, 2023], [2021, 0,
0, 2023]]
这是我得到的 jaunts 的值,第一个值在我什至没有更新的时候已经改变了。
当您将另一个变量分配给变量时,您实际上是在创建对同一列表的新引用,因此当您更改第二个变量中的某些内容时,您也会更改第一个变量,因为两者表示相同列表,例如:
first_list = [2020, 0,0, 2021]
second_list = first_list
second_list[0] = first_list[3]
print(first_list)
输出:
[2021, 0, 0, 2021]
与第一次迭代中 for 循环中发生的事情相同,您的 new_cell
和 o
变量实际上都是相同的 jaunted[0]
;当你在做 new_cell[0]=o[3]
你在做:jaunted[0][0] = jaunted[0][3]