有没有一种方法可以创建一个嵌套循环,循环次数不限(python)?
Is there a way to make a nested loop with as many loops as you like (python)?
我想做的是创建每一个组合,但只使用每个字母中的一个
我用了 3 组字母
inlist = ["Aa", "Bb", "Cc"]
outlist = []
for i in inlist[0]:
for j in inlist[1]:
for k in inlist[2]:
outlist.append(str(i + j + k))
输出:
outlist = ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc' ]
如果我想用 2 组或 4 组字母来做这个怎么办?有没有更简单的方法?
itertools.product
正是这样做的:
from itertools import product
inlist = ["Aa", "Bb", "Cc"]
outlist = []
for abc in product(*inlist):
outlist.append(''.join(abc))
print(outlist)
# ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']
abc
是一个从 ('A', 'B', 'C')
到 ('a', 'b', 'c')
的元组。唯一剩下的就是 join
返回到带有 ''.join(abc)
.
的字符串
>>> import itertools
>>> inlist = ["Aa", "Bb", "Cc"]
>>> [''.join(i) for i in itertools.product(*inlist)]
['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']
我想做的是创建每一个组合,但只使用每个字母中的一个
我用了 3 组字母
inlist = ["Aa", "Bb", "Cc"]
outlist = []
for i in inlist[0]:
for j in inlist[1]:
for k in inlist[2]:
outlist.append(str(i + j + k))
输出: outlist = ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc' ]
如果我想用 2 组或 4 组字母来做这个怎么办?有没有更简单的方法?
itertools.product
正是这样做的:
from itertools import product
inlist = ["Aa", "Bb", "Cc"]
outlist = []
for abc in product(*inlist):
outlist.append(''.join(abc))
print(outlist)
# ['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']
abc
是一个从 ('A', 'B', 'C')
到 ('a', 'b', 'c')
的元组。唯一剩下的就是 join
返回到带有 ''.join(abc)
.
>>> import itertools
>>> inlist = ["Aa", "Bb", "Cc"]
>>> [''.join(i) for i in itertools.product(*inlist)]
['ABC', 'ABc', 'AbC', 'Abc', 'aBC', 'aBc', 'abC', 'abc']