使用其他列表中的数据更新列表

时间:2017-06-07 10:04:00

标签: python list

我有两个列表,我想创建一个第三个列表,将两者的信息组合在一起,将值从第一个列表派生的位置分配给从第二个列表计算的实际值...一个例子可能更具说明性:

list1 = [ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0]
list2 = [ 0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0]

我要创建的新列表应包含原始1个值间隔中第二个列表的总和值:

list3 = [ 0,0,0,3,3,3,3,3,0,0,0,2,2,2,2,0]

任何建议?我是python的新手。 我想以某种方式使用一些itertool,但没有走得太远...

提前收到任何提示。

1 个答案:

答案 0 :(得分:4)

只需一种方法,检测list1中的群组并处理list2中每个群组的相应元素。

list1 = [ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,0]
list2 = [ 0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0]

from itertools import groupby, islice
it2 = iter(list2)
result = []
for k, g in groupby(list1):
    n = len(list(g))
    result += [k * sum(islice(it2, n))] * n

print(result)

打印:

[0, 0, 0, 3, 3, 3, 3, 3, 0, 0, 0, 2, 2, 2, 2, 0]