gpt4 book ai didi

python - 根据来自另一个列表的 True/False 过滤列表中的元素

转载 作者:行者123 更新时间:2023-12-03 23:19:58 25 4
gpt4 key购买 nike

有没有一种惯用的方法来屏蔽 Vanilla Python 3 中的数组元素?例如:

a = [True, False, True, False]
b = [2, 3, 5, 7]
b[a]
我希望 b[a]会返回 [2, 5] ,但我收到一个错误:

TypeError: list indices must be integers or slices, not list


在 R 中,这按我的预期工作(使用 c() 而不是 [] 来创建列表)。我知道 NumPy 有 MaskedArray可以做到这一点,我正在寻找一种惯用的方式在普通的 Python 中做到这一点。当然,我可以使用循环并遍历掩码列表和元素列表,但我希望有一种更有效的方法来使用更高级别的抽象来掩码元素。

最佳答案

您可以使用 itertools.compress :

>>> from itertools import compress
>>> a = [True, False, True, False]
>>> b = [2, 3, 5, 7]


>>> list(compress(b, a))
[2, 5]
引用 "itertools.compress()" document更多细节

关于python - 根据来自另一个列表的 True/False 过滤列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65548403/

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