python - 通过列表理解进行 7 张牌扑克手牌检测中的 5 张牌顺子

标签 python list list-comprehension poker

我正在编写一个 7 张牌扑克手牌评估脚本,用于学习目的。 目前正在对直接检测进行编程。

虽然我已经找到了一个可行的解决方案,但它并不是很“Pythonic”,因为它检查是否有 A-5 顺子,然后在另一个语句中检查其余的顺子。跛脚。

我已经创建了可能的顺子列表:

#  01 = Deuce, 13 = Ace
STRAIGHTS = [sorted([13, *range(1,14)][n:n+5]) for n in range(0,10)]

这包括讨厌的 A-5 直道。

现在我想做的是将我的手与这些列表相交,看看这个交集的长度是否大于 5。

如果我这样做:

if len([item for item in hand if item in [13,1,2,3,4]) >= 5

它就像一个魅力。但是,如果我将 STRAIGHTS 列表放在硬编码列表上,它就不起作用。这是为什么?

if len([item for item in hand if item in STRAIGHTS) >= 5

其他:

最佳答案

我假设你的也是一个整数列表

if max([len(set(hand).intersection(set(s))) for s in STRAIGHTS]) >=5

关于python - 通过列表理解进行 7 张牌扑克手牌检测中的 5 张牌顺子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58140157/

相关文章:

python - 将 Pandas 多索引变成列

python - 在 Python 的列表列表中查找特定项目

c++ - 如何在 C++ 中创建 map 函数?

haskell - 在列表理解中拥有许多相同生成器的惯用方式

python - 范围(len(list))还是枚举(list)?

list-comprehension - Perl 6 列表理解

python - 列表追加不起作用

HTTP Google Cloud Functions 上的 Python 和 "import requests"

python - 使用分页的 PyMongo 中光标太大的 MemoryError

python - 通过 For 循环使用另一个 JSON 数据的 .append() 生成的列表