【问题标题】:Math operations with lists using integers from nested lists使用嵌套列表中的整数进行列表的数学运算
【发布时间】:2016-03-20 09:06:47
【问题描述】:

我有:

List1 = [100, 200, 300]

List2 = [[34,35,36],[0,1,2,3],[0,1,2]]

如何将List1 的每个元素与List2 中每个列表内的每个元素相加?

我想要:

List3 = [[134,135,136],[200,201,202,203],[300,301,302]]

我尝试按照以下方式做一些事情:

for i in List2:
    [sum(x) for x in zip(List1, i)] 

但我没有得到正确的答案。

提前致谢。

【问题讨论】:

  • 通常你应该发一个minimal reproducible example;在这种情况下,因为变量名不能有空格,所以你的设置代码不能复制粘贴。
  • 谢谢,我现在修好了。

标签: python list math numpy integer


【解决方案1】:

我可能会建议一个稍微不同的实现:

List3 = map(lambda x, y: [z + x for z in y], List1, List2)

【讨论】:

  • 如果要添加的值为 0,即 [300][0] 应该等于 300(0 是该列表中的唯一元素),它不会这样做,而是跳过到[400]
【解决方案2】:

如果你想使用列表推导,你可以这样写:

>>> [[x + a for a in lst] for x, lst in zip(List1, List2)]
[[134, 135, 136], [200, 201, 202, 203], [300, 301, 302]]

(假设两个列表的长度相同;如果不是,您可能希望使用 itertools 库中的 zip_longest 来填充较短的列表。)

【讨论】:

  • 没问题 - 很高兴它有帮助!
  • 如果要添加的值是 0,即 [300][0] = 300(0 是该列表中的唯一元素),它不会这样做,而是跳到[400]
  • 嗯...它不应该跳过任何数字。本例中的List1List2 是什么?
  • 所以List1=[0,100,200,300,400]List2=[[0,1,2],[2,3,4],[51,52,53,54,55],[0],[12,13]]
  • 它仍然对我有用:我得到了列表 [[0, 1, 2], [102, 103, 104], [251, 252, 253, 254, 255], [300], [412, 413]]
猜你喜欢
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
相关资源
最近更新 更多