如何在Python中生成列表的所有排列,与该列表中的元素类型无关?
例如:
permutations([])
[]
permutations([1])
[1]
permutations([1, 2])
[1, 2]
[2, 1]
permutations([1, 2, 3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud) 我需要一个函数generateAllStrings(n, alphabet)来做这样的事情:
generateAllStrings(4, ['a','b'])
>>> ["aaaa", "aaab", "aaba", "aabb", "abaa", .... , "bbba", "bbbb"]
Run Code Online (Sandbox Code Playgroud)
换句话说,generateAllStrings(n, alphabet)应该在列表字母表中的字符上返回长度为n的所有可能的字符串.
在itertools中有这样的功能吗?
我正在尝试使用0到9之间的所有数字生成一组四个数字中所有可能数字组合的列表.
我越来越接近,但输出并没有显示从0000一直到9999的所有可能组合.
有关为什么以下代码丢弃某些组合的任何线索?
def permgen(items, n):
if n==0: yield []
else:
for i in range(len(items)):
for cc in permgen(items[:i]+items[i+1:],n-1):
yield [items[i]]+cc
if __name__=="__main__":
for c in permgen(['0','1','2','3','4','5','6','7','8','9'],4): print ''.join(c)