我有以下代码用于打印由my_list
中的字符组成的每个可能的长度为1-4的字符串,但是如果我要扩展此嵌套方法来处理长度为10的输出字符串,结果代码太长了。如何显示长度为10的所有可能变体?
my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
print(str(my_list[i]))
for i in range(len(my_list)):
for o in range(len(my_list)):
print(str(my_list[i]) + str(my_list[o]))
for i in range(len(my_list)):
for o in range(len(my_list)):
for p in range(len(my_list)):
print(str(my_list[i]) + str(my_list[o]) + str(my_list[p]))
for i in range(len(my_list)):
for o in range(len(my_list)):
for p in range(len(my_list)):
for a in range(len(my_list)):
print(str(my_list[i]) + str(my_list[o]) + str(my_list[p]) + str(my_list[a]))
(样本输出)
a
b
c
d
aa
ab
ac
ad
ba
bb
bc
bd
[...]
答案 0 :(得分:2)
如果我理解正确,您需要itertools.product
功能。
import itertools
my_list = ['a', 'b', 'c', 'd']
MAX_LENGTH = 4
for length in range(1,MAX_LENGTH + 1):
for x in itertools.product(my_list, repeat=length):
print(''.join(x))
答案 1 :(得分:0)
只需使用 itertools 包中的permutations
或combinations
函数即可。我想这会给你你想要的结果。
以下是文档:https://docs.python.org/2/library/itertools.html
我注意到你添加了样本输出。我认为你可以通过以下方式实现这一目标:
from itertools import *
input = "ABCD"
for x in range(1, len(input)+1):
result = product(input, repeat=x)
for item in result:
print "".join(item)