簡體   English   中英

如何獲取基於另一個列表的列表的子列表?

[英]How to get a sublist of a list based on another list?

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]

壓縮?

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

常規解決方案是使用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。

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

我的第一選擇將是您擁有的東西,但使用可以獲得相同的結果。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM