在for循环中存储更改变量的所有值

时间:2017-02-07 18:55:18

标签: python for-loop

我有一个名为 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通过循环所采用的各种值?

1 个答案:

答案 0 :(得分:2)

当你附加它时,你需要制作一个(浅)副本,否则你只是在更新同一个集合时,也就是在排队列表中已经引用的时候。因此,请按如下所示更改最后一行(添加set()):

Lineup_List.append(set(Current_Lineup))

这将附加当前行集的副本,以便您可以在下一次迭代中安全地更改它,而不会影响已添加的集合。