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

2024-04-24 04:28:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从给定的列表中选择一些元素,知道它们的索引。假设我想创建一个新列表,其中包含一个索引为1、2、5的元素,来自给定的列表[-2、1、5、3、8、5、6]。我所做的是:

a = [-2,1,5,3,8,5,6]
b = [1,2,5]
c = [ a[i] for i in b]

有更好的办法吗?像c=a[b]?


Tags: in元素列表for办法
3条回答

备选方案:

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

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

您可以使用^{}

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]

但实际上,你目前的解决方案是好的。这可能是他们中最整洁的。

另一个解决方案是通过熊猫系列:

import pandas as pd

a = pd.Series([-2, 1, 5, 3, 8, 5, 6])
b = [1, 2, 5]
c = a[b]

如果需要,可以将c转换回列表:

c = list(c)

相关问题 更多 >