我有两个列表,我想创建一个第三个列表,将两者的信息组合在一起,将值从第一个列表派生的位置分配给从第二个列表计算的实际值...一个例子可能更具说明性:
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,但没有走得太远...
提前收到任何提示。
答案 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]