|
1
716
This answer 遗漏了一个方面:OP要求所有组合。。。不仅仅是长度“r”的组合。
或者——如果你想变得时髦(或者让后面读你代码的人的大脑弯曲)——你可以生成“combinations()”生成器链,然后迭代:
|
|
|
2
594
从2.6开始,电池就包括在内了! |
|
|
3
58
这是一个懒惰的单行程序,也使用itertools:
这个答案背后的主要思想是:有2^N个组合——与长度为N的二进制字符串的数量相同。对于每个二进制字符串,您选择与“1”对应的所有元素。
需要考虑的事项:
演示
|
|
4
53
在高投票率下的评论中
answer
笔记
:如果细微不同的目标是仅获得唯一元素的组合,请更改行
|
|
|
5
41
下面是一个使用递归的例子:
|
|
|
6
41
这一行提供了所有的组合(在
Python 3
输出将是:
|
|
|
7
35
这是一种可以很容易地转移到所有支持递归的编程语言的方法 (无itertools,无收益,无列表理解) :
|
|
|
8
24
您可以使用以下简单代码在Python中生成列表的所有组合:
结果将是:
|
|
|
9
22
我同意Dan H,Ben确实要求
另一个问题是,如果输入iterable很大,最好返回一个生成器,而不是列表中的所有内容:
|
|
|
10
17
我想我会为那些寻求答案的人添加这个函数,而不必导入itertools或任何其他额外的库。
|
|
|
11
9
下面是另一个解决方案(一个班轮),涉及使用
演示:
|
|
|
12
8
输出
|
|
|
13
8
|
|
|
14
7
您也可以使用
powerset
|
|
|
15
4
下面是一个“标准递归答案”,与其他类似答案类似 https://stackoverflow.com/a/23743696/711085 . (实际上,我们不必担心堆栈空间耗尽,因为我们无法处理所有N!个置换。) 它依次访问每个元素,要么接受它,要么离开它(我们可以直接从这个算法中看到2^N基数)。
演示:
|
|
16
4
全部的 可以 如果您希望编写代码,那么只需理解列表就可以部分实现这一点 对于两对的组合:
而且,对于三对的组合,很容易做到:
结果与使用itertools.compositions相同:
|
|
|
17
3
下面是
返回一个生成器
请注意,建议为这些函数提供一个helper函数,因为prepend参数是静态的,并且不会随着每次调用而改变
这是一个非常肤浅的案件,但最好是安全的,而不是抱歉 |
|
|
18
3
这个怎么样。。使用了字符串而不是列表,但事情是一样的。。字符串可以像Python中的列表一样处理:
|
|
|
19
3
|
|
|
20
2
这段代码使用了一个简单的嵌套列表算法。。。
|
|
21
2
|
|
|
22
2
没有
最初在哪里
|
|
23
2
这是我的实现
|
|
|
24
1
产出将是:
|
|
|
25
1
我参加聚会迟到了,但我想分享我发现的解决同一问题的方法: 具体来说,我想做顺序组合,所以对于“星”,我想要“星”、“TA”、“AR”,而不是“SR”。
如果出于某种原因,这会在输出中返回空白列表,我会补充:
|
|
26
0
如中所述 the documentation
|
|
|
27
0
如果您不想使用组合库,以下是解决方案:
|
|
|
28
-1
如果有人在寻找一个相反的列表,比如我:
|
|
|
29
-1
|