我首先要说的是,我对Python很新,并且对编码很感兴趣。我对基本概念有一定的了解,但Python中特别使用的函数在很大程度上是我所不知道的。 Fwiw我是一个视觉/体验学习者。
如果这个问题已被提出并且已经回答,我也想直截了当地说明我道歉。我找到了很多“类似”的问题,但没有一个真正帮助我找到解决方案。
如我的主题标题所述,我有兴趣将nCr的“输出”(正确的术语?)创建到列表中,或者是查看它的最佳方法。
这将是10选择5.十个变量可以是数字,字母,名称,单词等。组合没有重复和顺序。
我想说我已经查看过像question/answer这样的类似主题,并发现这些概念很有用,但在示例代码中发现了这些:
from itertools import izip
reduce(lambda x, y: x * y[0] / y[1], izip(xrange(n - r + 1, n+1), xrange(1, r+1)), 1)
减少工具/功能不再以这种方式使用。我想我已经读到它从Python 3开始变为 functools 。
如何更新/更改上述代码(示例有用)或任何其他代码以适应reduce?有没有其他方法可以输出组合结果?
***Edit***
我想我没有清楚地连接问题和问题标题的内容。基本上我的主要问题是在问题标题下。虽然看一个人如何使用 itertools 从列表中进行组合是有帮助的,但我不知道如何输出10选择5.:\
答案 0 :(得分:0)
你想做什么:
>>> import itertools
>>> for combination in itertools.combinations('ABCDEFGHIJ', 5):
>>> print(''.join(combination))
ABCDE
ABCDF
ABCDG
ABCDH
ABCDI
ABCDJ
ABCEF
ABCEG
ABCEH
ABCEI
如果是这样,那就完成了。如果您想了解如何自己实施combinations
功能,那么您很幸运,因为itertools.combinations documentation提供了实施。