【问题标题】:Efficient way to subtract 2 list in python with certain conditions [closed]在某些条件下在python中减去2个列表的有效方法[关闭]
【发布时间】:2020-02-11 19:12:03
【问题描述】:

我有 2 个列表

A=[1,1.5,2.3,4,5] 
B=[1.6,2.6,3.3,4.4,5.5]

我想做B-A 这样B 的索引i 会从A 的索引(i+1) 中减去,如果返回的值为正,那么我们将存储该值,否则我们将放入0

对于上述情况,结果列表将如下所示

C = [0, .1, .3, 0, 0]

此外,结果列表的0th 索引应始终为0

【问题讨论】:

  • 那些是lists 不是数组。
  • 将列表移动一个位置只是取一个切片。问题代码和错误在哪里?
  • 如果他们是ndarraynp.maximum(0, B[:-1]-A[1:]) 会处理除初始 0 之外的所有内容。

标签: python python-3.x list numpy


【解决方案1】:

您可以在此处使用zip

A=[1,1.5,2.3,4,5]
B=[1.6,2.6,3.3,4.4,5.5]
res=[0]+[round(x-y,1) if x-y>0 else 0 for x,y in zip(B,A[1:])]
print(res)
#[0, 0.1, 0.3, 0, 0]

对于 numpy 数组,请使用 @hpaulj 在 cmets 中建议的 np.concatenatenp.maximum

import numpy as np
res=np.concatenate(([0],np.maximum(0, B[:-1]-A[1:])))
print(res)
#array([0. , 0.1, 0.3, 0. , 0. ])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多