我有两张单子
>>> players = ['a', 'b', 'c']
>>> viewers = ['d', 'e', 'f']
现在,参与者“b”将退出游戏。我不知道参与者是玩家还是观众,所以我加入了列表:
>>> participants = players + viewers
>>> participants
['a', 'b', 'c', 'd', 'e', 'f']
然后从关联列表中删除“b”:
>>> participants.remove['b']
>>> participants
['a', 'c', 'd', 'e', 'f']
但是,“b”并没有从原始列表中删除:
>>> players
['a', 'b', 'c']
我理解这是预期的行为
我的问题是,在Python中,有没有一种方法可以从连接列表中删除元素,同时影响原始列表
我目前的解决方法只是检查原始的玩家列表,然后是原始的观众列表,但这似乎应该有一种更具python风格的方法来做到这一点
players + viewers
这将创建一个新列表,您将从该新列表中删除当您有两个数据结构对它们中的每一个执行操作时,没有什么是真正的“非音速”的
如果您想在单个操作中完成此操作,您可以将
players
和viewers
包装在一个类中,并在该类上有一个remove
方法,该方法将从播放器和查看器中删除,这样您就可以隐藏“丑陋”的操作。但我认为这不值得使用2D阵列可以做到这一点
这是可能的,但前提是您在适当的位置修改一个列表。只要您将一个列表添加到另一个列表,这将创建一个新列表,并且此新列表上的更改将不会反映在原始列表上。从这个意义上讲,您在这里无能为力,因为调用
__add__
将始终创建一个副本要就地修改,您可以执行以下操作:
现在{}与{}和{}{}一起:
您将看到更新后的列表仍然是原始列表:
相关问题 更多 >
编程相关推荐