我尝试复制一个列表,然后更改该副本中的某些内容,但两个列表中的内容总是发生变化。
_team1_picks = team1_picks.copy()
_team2_picks = team2_picks.copy()
for karte in _team1_picks:
    print(team1_picks, _team1_picks)
    karte[2],karte[3] = karte[3],karte[2]
    print(team1_picks, _team1_picks)
for karte in _team2_picks:
    print(team2_picks, _team2_picks)
    karte[2],karte[3] = karte[3],karte[2]
    print(team1_picks, _team1_picks)
这是我的代码,输出是:
[['Kafe', 1, 7, 3]] [['Kafe', 1, 7, 3]]
[['Kafe', 1, 3, 7]] [['Kafe', 1, 3, 7]]
[['Oregon', 1, 7, 5]] [['Oregon', 1, 7, 5]]
[['Oregon', 1, 5, 7]] [['Oregon', 1, 5, 7]]
我还尝试用以下方法对列表进行切片
_team1_picks = team1_picks[:]
_team2_picks = team2_picks[:]
但结果相同。
在另一个场合它适用于.copy():
_decider = decider.copy()
_decider[1],_decider[2] = decider[2],decider[1]
这里只有_decider列表被修改。现在我很困惑为什么它一次有效但另一次无效,以及如何解决这个问题。
您所做的所有事情都只是复制顶级列表。这称为浅复制。如果要递归复制所有列表,包括嵌套子列表,可以使用深层复制:
new_list = copy.deepcopy(old_list)
这将递归复制所有列表和子列表。
| 归档时间: | 
 | 
| 查看次数: | 49 次 | 
| 最近记录: |