我有一个名为 CurrentLineup 的变量,其中包含一组5个名称
set(['Player 1', 'Player 2', 'Player 3', 'Player 4', 'Player 5'])
我有一个游戏过程中所有事件的循环,其中包括其他玩家'替换进出游戏。
我想要做的是创建一个包含所有5个人集的列表作为 CurrentLineup 更新,所以我在循环之外初始化了以下...以此代码为例。
Lineup_List = []
Lineup_List.append(Current_Lineup)
For i in game_events:
if "Enters Game" in i:
player = 'Player 6'
Current_Lineup.add(player)
if "Leaves Game" in i:
player2 = 'Player 4'
Current_Lineup.remove(player2)
if len(Current_Lineup) == 5:
Lineup_List.append(Current_Lineup)
我的问题是,当我在循环之后返回Lineup_List时,它会多次使用Current_Lineup的最终版本。
如果此循环运行两次,我希望Lineup_List具有以下结果:
[set(['Player 1', 'Player 2', 'Player 3', 'Player 4', 'Player 5']),
set(['Player 1', 'Player 2', 'Player 3', 'Player 6', 'Player 5'])]
如何按发生顺序保留CurrentLineup通过循环所采用的各种值?
答案 0 :(得分:2)
当你附加它时,你需要制作一个(浅)副本,否则你只是在更新同一个集合时,也就是在排队列表中已经引用的时候。因此,请按如下所示更改最后一行(添加set()
):
Lineup_List.append(set(Current_Lineup))
这将附加当前行集的副本,以便您可以在下一次迭代中安全地更改它,而不会影响已添加的集合。