我是 python 编程的新手(嗯,一般的编程),所以我真的希望有人可以帮助我使用内置的 itertools.combinations 函数。
我正在尝试从 52 张卡片(即 52 C 7)列表中创建所有可能组合 7 卡片组合的列表。
所以我的代码看起来像
>>> import itertools
>>> deck = [1,2,3,4,5...,52]
>>> list_1 = list(itertools.combinations(deck,2))
>>> list_1[5]
(1, 7)
工作到目前为止,直到我尝试 7 的组合
>>> all_possible_hands = list(itertools.combinations(deck,7))
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
all_possible_hands = list(itertools.combinations(deck,7))
MemoryError
可以为较小的数据集(52 C 2)创建该列表,但是当数字变大时,我得到一个 MemoryError,可能是 RAM 不足。我用谷歌搜索了 combine() 函数的工作原理,显然它输出了一个对象,我将其转换为一个列表。
当我没有 list() 时,控制台返回了一个内存地址(我相信)。
>>> all_possible_hands = itertools.combinations(deck,7)
>>> all_possible_hands
<itertools.combinations object at 0x02E63180>
我的问题是:内存地址是否包含我想要的数据,并且可以并且以某种方式将其转换为列表或其他东西,以便我可以访问列表中的各个元素?
谢谢你。任何见解将不胜感激。