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

2024-06-16 09:53:35 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有比大量嵌套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

示例列表我真的希望避免为以下对象键入写循环:

^{pr2}$

Tags: 方法字符串inforrstlistprintxy
3条回答

另一种方式?一定地。更简单?也许不是。。。在

我猜这是因为你不一定知道你的列表中有多少个字符串。在

关于: 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

你需要itertools.product公司名称:

import itertools
list = ['rst','uvw','xy','awfg22','xayx','1bbc1','thij','bob','thisistomuch']
for x in itertools.product(*list):
    print(''.join(x))

产品从它获得的迭代器返回所有可能的元素元组。所以

^{pr2}$

将返回生成器,生成('a','c'),('a','d'),('b','c'),('b','d')

您正在从itertools中查找product函数:

import itertools

lst = ['rst','uvw','xy']
[''.join(s) for s in itertools.product(*lst)]

# ['rux',
#  'ruy',
#  'rvx',
#  'rvy',
#  'rwx',
#   ...
#  'twx',
#  'twy']

相关问题 更多 >