具有列表理解的 7 张牌扑克手牌检测中的 5 张牌

5 card straight in 7 card poker hand detection with list comprehension

我正在编写一个 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

else:

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

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