我正在寻找一个函数来遍历列表列表,该列表会自动将结果放在一起并产生由(内部)循环产生的每个结果。没有从 Python 的标准库中看到任何可识别的候选者,loop
结果是下面的函数。有谁知道任何可用的功能可以做类似的事情或以更好的方式编写,可以用来代替loop
?在下面给出的代码的示例用法中,产生的迭代的顺序无关紧要,但对于其他项目中的一般用途,产生的结果最好按顺序列表进入它。
from itertools import permutations
GROUPS = ('he', 'she'), ('man', 'woman'), ('male', 'female'), ('adam', 'eve')
def main():
for size in range(2, len(GROUPS) + 1):
for groups in permutations(GROUPS, size):
for items in loop(*groups):
print(''.join(items).capitalize())
def loop(*args):
head, tail = args[0], args[1:]
if tail:
for a in head:
for b in loop(*tail):
yield [a] + b
else:
for a in head:
yield [a]
if __name__ == '__main__':
main()