是否有一种更简单的方法来迭代多个字符串而不是大量的嵌套for循环?
list = ['rst','uvw','xy']
for x in list[0]:
for y in list[1]:
for z in list[2]:
print x+y+z
rux
ruy
...
tvx
tvy
twx
twy
示例列表我真的想避免为:
键入编写循环list = ['rst','uvw','xy','awfg22','xayx','1bbc1','thij','bob','thisistomuch']
答案 0 :(得分:3)
你需要itertools.product:
import itertools
list = ['rst','uvw','xy','awfg22','xayx','1bbc1','thij','bob','thisistomuch']
for x in itertools.product(*list):
print(''.join(x))
产品从它获得的迭代器返回所有可能的元素元组。所以
itertools.product('ab', 'cd')
将返回一个生成器,产生('a','c'),('a','d'),('b','c'),('b','d')
答案 1 :(得分:3)
您正在寻找product
的{{1}}功能:
itertools
答案 2 :(得分:0)
另一种方式?当然。更简单?也许不是......
我猜它是因为你不一定知道你的名单中有多少个字符串。
怎么样: sl = [' abc',' mno',' xyz']
def strCombo(l,s=''):
if(len(l)==0):
return s
elif(len(l)==1):
return [(s+x) for x in l[0]]
else:
return [strCombo(l[1:],(s+x)) for x in l[0]]
final = []
for x in strCombo(sl)[0]:
final = final + x