gpt4 book ai didi

python - 仅当单独的 boolean 列表中的元素为真时,才对 python 列表中的元素求和

转载 作者:行者123 更新时间:2023-11-28 20:04:30 24 4
gpt4 key购买 nike

我有两个 python 列表,

A = [ 1, 2, 3, 4, 5 ]
B = [ True, False, False, True, True ]

列表 A 和 B 的长度相同。

我只想对 A 中对应于 B 中 True 元素的元素求和。我知道我可以用类似的东西来做到这一点:

sum([A[x] for x in xrange(len(A)) if B[x]])

但我想知道是否有更优雅的解决方案,不涉及循环每个列表中的元素?

最佳答案

使用 itertools.compress :

>>> from itertools import compress
>>> sum(compress(A, B))
10

itertools.compress 的实现在链接页面上有描述。它简短而简单,因此您不必导入 itertools 1:

>>> sum(a for a, b in zip(A, B) if b)
10

1 OTOH,itertools.compress 是用 C 实现的,因此应该更快

关于python - 仅当单独的 boolean 列表中的元素为真时,才对 python 列表中的元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com