如何获取基于另一个列表的列表的子列表?

时间:2018-09-25 22:09:04

标签: python list indexing list-comprehension

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]

4 个答案:

答案 0 :(得分:1)

邮编?

print([[*i] for i in list(zip(a,b)) if i[0] > 10])
[[12, 'a'], [14, 'd']]

答案 1 :(得分:1)

常规解决方案是使用zip

res = [i for i, j in zip(a, b) if j > 10]

可以通过operator.itemgetterenumerate进行功能替代:

from operator import itemgetter

res = itemgetter(*(idx for idx, val in enumerate(a) if val > 10))(b)

对于矢量化功能/语法,您可以使用第三方库,例如NumPy。

答案 2 :(得分:0)

import numpy as np
a = np.array(a)
b = np.array(b)
c = b[np.where(a>10)]

答案 3 :(得分:0)

我的第一选择应该是您拥有的东西,但使用可以获得相同的结果

[s[1] for s in zip(a, b) if s[0] > 10]