访问列表的多个元素,知道它们的索引

新手上路,请多包涵

我需要从给定的列表中选择一些元素,知道它们的索引。假设我想创建一个新列表,其中包含给定列表 [-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] 这样的东西?

原文由 hoang tran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 450
2 个回答

您可以使用 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]


但实际上,您当前的解决方案很好。它可能是所有这些中最整洁的。

原文由 TerryA 发布,翻译遵循 CC BY-SA 4.0 许可协议

备择方案:

 >>> map(a.__getitem__, b)
[1, 5, 5]


 >>> import operator
>>> operator.itemgetter(*b)(a)
(1, 5, 5)

原文由 falsetru 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题