考虑两个列表:
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循环的方法?列表可能会很长。
任何帮助将不胜感激:)
答案 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]