Zip_longest Plus:遍历不同长度的列表

时间:2020-11-11 05:17:33

标签: python list iteration itertools combinatorics

我一直在通过不等长的列表(例如one)来遍历有关迭代的问题,但我一直找不到能满足我的确切要求的问题。

我有两个长度不等的列表:

list_1 = ["dog", "cat"]
list_2 = ["girl", "boy", "man", "woman"]

如果要遍历不同长度的列表,可以按以下方式使用itertools zip-longest函数

for pet, human in zip_longest(list_1, list_2):
    print(pet, human)

我得到的输出如下:

dog girl
cat boy
None man
None woman

问题:如果我希望迭代器输出以下内容,该怎么办:

dog girl
dog boy
dog man
dog woman
cat girl
cat boy
cat man
cat woman

在迭代中,我想将list_1的每个元素“组合”到list_2的每个元素。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您要寻找的工具是itertools.product()

>>> from itertools import product
>>> list_1 = ["dog", "cat"]
>>> list_2 = ["girl", "boy", "man", "woman"]
>>> for pet, human in product(list_1, list_2):
        print(pet, human)
        
dog girl
dog boy
dog man
dog woman
cat girl
cat boy
cat man
cat woman