首页 > 解决方案 > 检查所有元组是否包含特定值

问题描述

我有一个代表扑克牌的元组列表:hand = [('A', '♣'), ('A', '♠'), ('A', '♦'), ('A', '♥'), ('K', '♠')]我想检查我是否有同花。

我想过使用all(h[1] == '♠' for h in hand)它,它似乎运作良好(False在这种情况下,但True在其他情况下,它应该在哪里。当然,我需要检查所有 4 套西装......),但我想知道这是否是正确/最好的方法

标签: pythontuples

解决方案


你可以:

any(all(h[1] == suit for h in hand) for suit in ('♣','♠','♦','♥'))

在我看来,这不是很有效但非常易读,或者你可以按照@ Ev 的建议进行操作。Kounis 在评论中,这是更有效的解决方案,但不是很可读。由于这款游戏每副牌只有 52 张牌,4 套花色,13 套,每手牌 5 张牌,所以数量并不大,需要对效率进行任何特殊处理,所以我会采用这种解决方案。


推荐阅读