将列表中的值汇总到另一个列表索引是1?

Rya*_*ker 3 python lambda list

我有两个清单:

list_1 = [0, 1, 0, 0, 0, 0, 1]
list_2 = [34, 54, 23, 54, 656 34, 100]
Run Code Online (Sandbox Code Playgroud)

我想只将list_2索引所在list_2的值与实际相同索引的值1 相加list_1.

这里的例子是 54 + 100 = 154

我怎么能用Pythonic方式在Python中做到这一点?

Jim*_*ard 7

只要使用compressitertools与喂它sum; 它是为此目的而建造的:

from itertools import compress 
r = sum(compress(list_2, list_1))
Run Code Online (Sandbox Code Playgroud)


Uri*_*iel 6

压缩列表,然后仅对第一个元素所在的值求和1:

s = sum(b for a, b in zip(list_1, list_2) if a)
Run Code Online (Sandbox Code Playgroud)

另一种拉链方法是列表之间的元素乘法(从而消除其并行的元素0):

s = sum(a * b for a, b in zip(list_1, list_2))
Run Code Online (Sandbox Code Playgroud)