我需要从给定列表中选择一些元素,知道它们的索引。假设我要创建一个新列表,该列表包含给定列表[-2、1、5、3、8、5、6]中索引为1、2、5的元素。我所做的是:
a = [-2,1,5,3,8,5,6] b = [1,2,5] c = [ a[i] for i in b]
有什么更好的方法吗?像c = a [b]?
您可以使用operator.itemgetter:
operator.itemgetter
from operator import itemgetter a = [-2, 1, 5, 3, 8, 5, 6] b = [1, 2, 5] print(itemgetter(*b)(a)) # Result: (1, 5, 5)
或者您可以使用numpy:
import numpy as np a = np.array([-2, 1, 5, 3, 8, 5, 6]) b = [1, 2, 5] print(list(a[b])) # Result: [1, 5, 5]
但实际上,您当前的解决方案很好。这可能是所有人中最整洁的。