【发布时间】:2019-03-01 14:47:33
【问题描述】:
a = [12,3,8,14]
b = ['a','b','c','d']
我想找到b中元素的子列表,使得a中的对应项大于10:
b_even = [b[i] for i, e in enumerate(a) if e > 10]
这段代码可以正常工作,但有没有像 R 中的 b[a>10] 这样更简单的方法?
【问题讨论】:
-
您已经拥有使用列表执行此操作的“Pythonic”方式。您建议的较短语法可用于
numpy数组。 -
在 Python 中,我会使用
[y for x,y in zip(a,b) if x > 10]。但是不,Pythonlist对象不支持向量化操作。为此使用numpy和pandas -
在 zip 和 numpy 方法之间,哪个更快?
标签: python list indexing list-comprehension