【发布时间】:2013-12-24 17:53:47
【问题描述】:
我需要的是一次为两个元素创建组合。
如果列表包含:seq = ['A', 'B', 'C']
输出将是com = [['A', 'B'], ['A', 'C'], ['B', 'C']]
这一切都没有itertools.combinations 方法。
我使用以下代码进行排列。但是我该如何修改它以使其与组合一起使用?
def permute(seq):
if len(seq) <= 1:
perms = [seq]
else:
perms = []
for i in range(len(seq)):
sub = permute(seq[:i]+seq[i+1:])
for p in sub:
perms.append(seq[i:i+1]+p)
return perms
【问题讨论】:
-
为什么没有
itertools? -
combinations的等效源代码在itertools文档页面上。只需将其复制粘贴到您的文件中即可。 -
是的,我不能使用其他方法。谢谢,我去看看。
-
@jonrsharpe
itertools.combinations函数返回字典排序顺序,这对于整数列表可能是不可取的 - 即combinations([1,2,10,3], 3)在[1,2,3]之前产生[1,2,10]。
标签: python combinations