python - 检查所有元组是否包含特定值
问题描述
我有一个代表扑克牌的元组列表:hand = [('A', '♣'), ('A', '♠'), ('A', '♦'), ('A', '♥'), ('K', '♠')]
我想检查我是否有同花。
我想过使用all(h[1] == '♠' for h in hand)
它,它似乎运作良好(False
在这种情况下,但True
在其他情况下,它应该在哪里。当然,我需要检查所有 4 套西装......),但我想知道这是否是正确/最好的方法
解决方案
你可以:
any(all(h[1] == suit for h in hand) for suit in ('♣','♠','♦','♥'))
在我看来,这不是很有效但非常易读,或者你可以按照@ Ev 的建议进行操作。Kounis 在评论中,这是更有效的解决方案,但不是很可读。由于这款游戏每副牌只有 52 张牌,4 套花色,13 套,每手牌 5 张牌,所以数量并不大,需要对效率进行任何特殊处理,所以我会采用这种解决方案。
推荐阅读
- javascript - 如何将 JS 日期时间转换为本地 MySQL 日期时间?
- javascript - Vue 状态未使用默认注入值更新
- mysql - Laravel Transaction:如何提交一些查询而不是全部回滚?
- java-threads - Java线程同步101
- typescript - 打字稿:到达一个类而不导出它
- go - GO 制作多个使用 nmap 的 goroutine
- javascript - FullCalendar 资源分组不适用于 React
- apache-kafka - Failed to connect to kafka cluster When running Kafka and Kafka-connect on different servers
- c# - What is the C# equivalent for the VB function IsObject?
- oracle - Oracle JDBC - Effect of commit() rollback() close() AutoCommit() on connection - Pending Underlying transactions