循环通过5个中的3个组合

时间:2016-07-10 16:25:58

标签: python arrays

我正致力于编写扑克模拟。我已经准备好了一些零件。 但我坚持把手与桌子上的牌比较。 我的想法是获得我的2张牌并从牌组中取出3张随机牌,看看是否有冲洗或其他东西。但当然我必须循环,所以我用手和甲板把所有的组合。

如果这些是牌组中的5张牌,1代表我将采取的牌位并与之比较。这些都是我将卡片与卡片进行比较的组合。

00111
01011
01101
01110
10011
10101
10110
11001
11010
11100

我怎么能循环呢?表卡只是一组对象。

2 个答案:

答案 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)]