Zip_longest Plus:遍历不同长度的列表[重复]

Posted

技术标签:

【中文标题】Zip_longest Plus:遍历不同长度的列表[重复]【英文标题】:Zip_longest Plus: Iterating through lists of Different Lengths [duplicate] 【发布时间】:2020-11-11 05:17:33 【问题描述】:

我一直在通过不等长度的列表来处理迭代问题,例如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 的每个元素。我该怎么办?

【问题讨论】:

@wim 换句话说,你在我回答后几秒钟内关闭了它,这让我不太愿意花更多的时间在这里帮助其他人。 Python 主题有超过 100 万个问题,因此您可以争辩说每个问题之前都已涉及,并且 *** 应该成为静态常见问题解答。就个人而言,我认为 OP 的问题具有一些鲜明的特征,但这种想法永远不会战胜一小群激进的问题终结者。所以,现在用户不会收到 itertools.product() 的作者的消息了。 @RaymondHettinger 很抱歉,但 this 问题绝对是重复的。基本问题确实已经得到解答,但你我都知道 Python 不是静态的,围绕它的更大的生态系统也不是。会有更多问题。 @RaymondHettinger 如果您想讨论关闭后的相对优点等,请在此处向我询问 cmets 以外的其他内容。这不是真正适合它的地方:-/ @RaymondHettinger 很遗憾听到这个消息!非常感谢您在 SO 上的时间和内容(甚至多次亲自帮助我)。但是过多的重复答案对网站没有帮助,最好将精力花在其他地方。如果您认为关闭是错误的,您可以投票重新打开并解释为什么它有显着不同 - 我的投票不是这件事的最终决定权。 【参考方案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

【讨论】:

以上是关于Zip_longest Plus:遍历不同长度的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将不同长度的列表添加到新数据帧

遍历 pyspark 数据框中的列,而不为单个列创建不同的数据框

在R中将具有不同长度和两个条件的不同数据帧的列相乘

python中itertools模块zip_longest函数实现逻辑

熊猫在不同长度的列上合并两个数据框

如何使用 genfromtxt() 从 NumPy 中的文本文件中读取不同长度的列?