将一个列表中的项目添加到另一列表中的特定项目

时间:2018-10-21 13:57:01

标签: python list

考虑两个列表:

a = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000]

b = [-10, 20, -88, 15, 10, -6, 10, 10]

我希望创建第三个列表,其中列表b中的每个负值都将替换为列表a中的相应(相同索引)项。然后将列表b中的以下正数连续添加到该替换值(来自列表a),直到下一个负数。

为澄清起见,上述情况下的结果列表应为:

c = [1000, 1020, 3000, 3015, 3025, 6000, 6010, 6020]

到目前为止,我的(有效)代码:

a = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000]
b = [-10, 20, -88, 15, 10, -6, 10, 10]
c = []
for i in range(len(b)):
    if b[i] < 0:
        c.append(a[i])
    else:
        c.append(c[-1]+b[i])

有没有没有for循环的方法?列表可能会很长。

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:0)

我使用zip浏览了两个列表,在这种情况下,假设两个长度相等。只要是这样,就应该能够在大多数情况下正常工作。

a = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000]
b = [-10, 20, -88, 15, 10, -6, 10, 10]

c = []

old_val = 0
for value_a,value_b in zip(a,b):
    print(value_b)
    if value_b < 0:
        c.append(value_a)
        old_val = value_a
    else:
        old_val += value_b
        c.append(old_val)

#[1000, 1020, 3000, 3015, 3025, 6000, 6010, 6020]