我正致力于编写扑克模拟。我已经准备好了一些零件。 但我坚持把手与桌子上的牌比较。 我的想法是获得我的2张牌并从牌组中取出3张随机牌,看看是否有冲洗或其他东西。但当然我必须循环,所以我用手和甲板把所有的组合。
如果这些是牌组中的5张牌,1代表我将采取的牌位并与之比较。这些都是我将卡片与卡片进行比较的组合。
00111
01011
01101
01110
10011
10101
10110
11001
11010
11100
我怎么能循环呢?表卡只是一组对象。
答案 0 :(得分:4)
您表示输出的方式令人困惑,但由于您想从一组5张卡中选择3张牌,您需要5C3。您可以使用sudo apt install libegl-mesa0-dev
实现此目的。
来自doc: -
itertools.combinations(iterable,r):
从输入迭代中返回元素的r长度子序列。
组合以字典排序顺序发出。所以,如果输入 对iterable进行排序,组合元组将按排序生成 顺序。
根据元素的位置而不是元素,将元素视为唯一元素 值。因此,如果输入元素是唯一的,则不会重复 每个组合中的值。
导入itertools
itertools.combinations
<强>输出:强>
a = [0,1,2,3,4] print [p for p in itertools.combinations(a, 3)]
答案 1 :(得分:3)
可能会尝试combinations
中的itertools
:
[c for c in itertools.combinations(range(5), 3)]
[(0, 1, 2),
(0, 1, 3),
(0, 1, 4),
(0, 2, 3),
(0, 2, 4),
(0, 3, 4),
(1, 2, 3),
(1, 2, 4),
(1, 3, 4),
(2, 3, 4)]