我有一个这样的列表:
x = [True False True False]
Run Code Online (Sandbox Code Playgroud)
和这样的列表:
y = [a b c d]
Run Code Online (Sandbox Code Playgroud)
我想掩盖x在y上得到这个输出:
output = [a c]
Run Code Online (Sandbox Code Playgroud)
我知道如何使用while/for循环来做这件事,但理想情况下使用列表理解来寻找优雅的单行代码.
我认为最简单的方法是使用numpy:
import numpy as np
>>> x = [True, False, True, False]
>>> y = ['a', 'b', 'c', 'd']
>>> np.array(y)[x]
array(['a', 'c'], dtype='<U1')
Run Code Online (Sandbox Code Playgroud)
如果没有numpy,您还可以在列表理解中枚举:
>>> [i for idx, i in enumerate(y) if x[idx]]
['a', 'c']
Run Code Online (Sandbox Code Playgroud)
您可以使用zip和列表推导y基于相应的真值来执行过滤操作x:
x = [True, False, True, False]
y = ["a", "b", "c", "d"]
print([b for a, b in zip(x, y) if a])
Run Code Online (Sandbox Code Playgroud)
输出:
['a', 'c']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |