n3u*_*ino 2 python comparison boolean list-comprehension
我有两个python列表,
A = [ 1, 2, 3, 4, 5 ]
B = [ True, False, False, True, True ]
Run Code Online (Sandbox Code Playgroud)
列表A和B的长度相同.
我想只总结A中与B中的True元素相对应的元素.我知道我可以用以下方法做到:
sum([A[x] for x in xrange(len(A)) if B[x]])
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一个更优雅的解决方案,不涉及循环每个列表中的元素?
>>> from itertools import compress
>>> sum(compress(A, B))
10
Run Code Online (Sandbox Code Playgroud)
itertools.compress链接页面上描述了实现.这是短期和简单,所以你不要有进口itertools 1:
>>> sum(a for a, b in zip(A, B) if b)
10
Run Code Online (Sandbox Code Playgroud)
1 OTOH,itertools.compress用C实现,因此应该更快
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |