Python:避免使用多个嵌套for循环来迭代字符串

时间:2016-08-11 17:53:49

标签: python for-loop

是否有一种更简单的方法来迭代多个字符串而不是大量的嵌套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']

3 个答案:

答案 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