python - 从对中获取另一个元素

标签 python list python-3.x

如果我知道另一个元素,如何从 Python 3 中的一对(2 个元素的列表)中获取一个元素?比如在回合制策略游戏中,我想调换玩家:

players = [playerA, playerB]
active_player = playerA

players_tmp = list(players) 
players_tmp.remove(active_player)
active_player = players_tmp[0]

这段代码工作得很好,但是很丑。

当然,在这种特殊情况下,我总是可以存储事件玩家的索引(0 或 1),然后执行以下操作:

self._active_player = 1 - self._active_player

然后写@property方法。但这并不那么有趣。

有什么漂亮的方法吗?

最佳答案

为了找到一对中的另一个元素,我只需要编写一个漂亮而清晰的函数:

def other_of(pair, item):
    a, b = pair
    return a if item == b else b
…
active_player = other_of(players, active_player)

不过,如果它适用于您的情况,itertools.cycle循环选项可能是更好的方法:

import itertools

player_rotation = itertools.cycle(players)
…
active_player = next(player_rotation)

关于python - 从对中获取另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30879608/

相关文章:

python - 检查字符串是否以列表中的一个字符串结尾

list - 为什么要使用两个堆栈进行排队?

list - 如何从列表中发出每个项目之间有延迟的项目?

python - 如何使用 Pandas 将第二天日期置于现有日期值之下

Python 3 - 计算两个列表中的匹配项(包括重复项)

javascript - cefpython 截取当前 html 的屏幕截图(可选 : specific elements)

python - 如何在 Python 中生成日志均匀分布?

python-3.x - Python 嵌套括号函数参数列表语法无效

python - Numpy:Row Wise Unique 元素

python - pipenv 仅在主目录中安装 .venv