我有一个清单,看起来像:
A
B
C
D
E
F
G
我怎么解决这个问题,找到3位数的所有组合。同一个字母不能在同一行中使用。在
^{pr2}$例如……:
x = ['a','b','c','d','e']
n = 3
import itertools
aa = [list(comb) for i in range(1, n+2) for comb in itertools.combinations(x, i)]
print(aa)
这不会提供所需的输入:
[['a'], ['b'], ['c'], ['d'], ['e'], ['a', 'b'], ['a', 'c'], ['a', 'd'], ['a', 'e'], ['b', 'c'], ['b', 'd'], ['b', 'e'], ['c'
要了解解决方案流程的工作原理,请尝试以下操作:
组合作用于字符串而不是列表,因此您应该首先使用:
''.join(x)
将其转换为字符串输出
^{pr2}$或者作为一条直线:
Python标准库itertools已经具有您正在尝试实现的功能。你还在你的代码中使用它(有趣)。在
itertools.combinations(a,3)
返回a的所有3个组合。要将其转换为“list of list”,您应该使用.extend()
,如下所示相关问题 更多 >
编程相关推荐