问题描述
#!/usr/bin/python
import itertools
list1 = ['XTN','XES','XSD','XRT','XLI','XME','XLE','XLF','XAR','XLB','XHE','XLK','XLY','XHB','XBI','XLP','XLV','XPH','XLU']
perm = list(itertools.permutations(list1))
print(perm)
嗨,上面的代码在大小合适的实例或站上被“杀死”,无论如何它的运行时间是不可接受的。
我的问题是,对于给定的列表,我想排列排列但产生所有,例如“A”、“B”、“C”
A
B
C
AB
AC
BC
等等 - 任何人都有可以为任意列表执行此操作而不压缩机器的代码?
解决方法
itertools.permutations()
返回一个生成器,因此您可以……不将其转换为列表。
list1 = ['XTN','XES','XSD','XRT','XLI',...]
permutations = itertools.permutations(list1)
for permutation in permutations:
print(permutation)