比方说,我有一个元素列表X
和一个索引Y
。
X = [1, 2, 3, 4, 5, 6, 7]
Y = [0, 3, 4]
Python中是否有一个函数可以根据X
中提供的索引从Y
中提取元素?执行后,X
将是:
X = [1, 4, 5]
答案 0 :(得分:4)
X = [X[index] for index in Y]
这是列表理解;您可以查找该主题以了解更多信息。
答案 1 :(得分:1)
@Prune提供的列表理解是使用纯python的方法。如果您不介意numpy
,则只需使用其索引方案可能会更容易:
import numpy as np
>>> np.array(X)[Y]
array([1, 4, 5])
答案 2 :(得分:1)
您可以将list.__getitem__
与map
一起使用:
X = [1, 2, 3, 4, 5, 6, 7]
Y = [0, 3, 4]
res = list(map(X.__getitem__, Y)) # [1, 4, 5]
或者,如果您愿意使用第三方库,则可以使用NumPy:
import numpy as np
X = np.array([1, 2, 3, 4, 5, 6, 7])
res = X[Y] # array([1, 4, 5])