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]
?
答案 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.itemgetter
和enumerate
进行功能替代:
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]