给定一个包含n个字母的列表,如['a','b','c']
,输出不同的组合。对于此示例,输出将为['abc','acb','bac','bca','cab','cba']
。虽然我已经解决了这个问题,但遗憾的是效率非常低,当元素数量稍微大一些时,如10,代码不能解决内存错误。有没有人有快速有效的算法来解决这个问题?
答案 0 :(得分:2)
这些是排列,而不是组合。
itertools
有你需要的东西:
from itertools import permutations
[''.join(perm) for perm in permutations(li)]
itertools.permutations
的文档还有一些食谱。