【问题标题】:Replace Python nested For Loops with comprehension [duplicate]用理解替换 Python 嵌套的 For 循环 [重复]
【发布时间】:2017-12-22 23:33:17
【问题描述】:

我正在寻找一种使用列表推导来实现以下目标的方法:

a = [1,2,3,4]
b = [5,6,7,8]
vals = []

for i in a:
  for j in b:
    vals.append(i*j)

print(vals)

我确信有一种方法可以通过列表理解来做到这一点,但我不知道如何继续。

【问题讨论】:

  • vals = [i*j for i, j in zip(a,b)]
  • 它可能是重复的,但不是你提到的那个 - 该解决方案给了我一个列表列表;我对列表列表不感兴趣,我想要所有值的列表。运行我的代码,然后运行您引用的代码,您会看到不同之处。

标签: python for-loop list-comprehension


【解决方案1】:

纯列表理解:

[i*j for i in a for j in b]

输出:

[5, 6, 7, 8, 10, 12, 14, 16, 15, 18, 21, 24, 20, 24, 28, 32]

【讨论】:

  • 我发布了那个答案然后删除了,因为我看到了一些东西(那不存在)。我认为今天对我来说已经晚了 :) 为大脑远程信息处理 +1!
【解决方案2】:

itertools' product 将为您提供两个列表中元素的所有组合。然后,您可以使用推导来乘以每一对:

from itertools import product
print([x[0] * x[1] for x in product(a, b)])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2020-06-03
    • 2018-05-21
    • 2019-06-06
    • 2016-07-14
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多