【问题标题】:Calculations from elements of two list of lists从两个列表的元素计算
【发布时间】:2019-07-31 21:13:32
【问题描述】:

我有两个列表

lst1=[['1', '1', '0'],['1', '-1', '0'],['1', '0', '-3'],['0', '1', '-0.5']]
lst2=[(1,1),(2,1),(3,2),(3,4)]

我想将 list1 中的每个元素与 lst2 相乘。 即 lst 的第一个列表中的第一个元素 * lst2 中的所有列表

[1*1+1*1+0, 1*2+1*1+0, 1*3+1*2+0, 1*3+1*4+0]
etc.

我将第一个列表元素转换为浮点数,并将列表列表扁平化为单个列表。我的逻辑似乎是错误的。我被困在这里了。

有人可以帮助我提示如何进行吗?

谢谢

【问题讨论】:

    标签: python-3.x string list


    【解决方案1】:

    此代码使用以下操作。

    • 列表理解,外部循环用于 lst1,内部循环用于 lst2
    • 在lst1的元素上使用map(float, l1)来转换为int
    • 连接一个包含数字 0 l2+(0,) 的 1 元素元组,为 lst2 的元素中缺少的第 3 个元素创建一个隐式乘数,最终结果是忽略 lst1 中每个三元组的第 3 个元素。李>
    • 使用map(mul, ... 进行三元组的乘法运算。
    • 使用 sum 将三元组相加以创建最终结果列表
    from operator import mul
    
    lst1=[['1', '1', '0'],['1', '-1', '0'],['1', '0', '-3'],['0', '1', '-0.5']]
    lst2=[(1,1),(2,1),(3,2),(3,4)]
    
    
    print([sum(map(mul, map(float, l1), l2+(0,))) for l2 in lst2 for l1 in lst1])
    

    结果:

    [2.0, 0.0, 1.0, 1.0, 3.0, 1.0, 2.0, 1.0, 5.0, 1.0, 3.0, 2.0, 7.0, -1.0, 3.0, 4.0]
    

    【讨论】:

      猜你喜欢
      • 2018-11-20
      • 2022-11-23
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多