我问这个问题与这个问题有关:
Access multiple elements of list knowing their index
基本上,如果你有一个列表并想要获得几个元素,你不能只传递一个索引列表。
示例:
a = [-2,1,5,3,8,5,6]
b = [1,2,5] # list of indexes
a[b] #this doesn't work
# expected output: [1,5,5]
为了解决这个问题,在链接问题中提出了几个选项:
使用列表理解:
a = [-2,1,5,3,8,5,6]
b = [1,2,5]
c = [a[i] for i in b]
使用operator.itemgetter
:
from operator import itemgetter
a = [-2, 1, 5, 3, 8, 5, 6]
b = [1, 2, 5]
print itemgetter(*b)(a)
或使用numpy数组(可以接受带列表的索引)
import numpy as np
a = np.array([-2, 1, 5, 3, 8, 5, 6])
b = [1, 2, 5]
print list(a[b])
我的问题是:为什么普通名单不接受这个?这不会与正常索引[start:end:step]
冲突,并且将提供另一种访问列表元素的方法,而无需使用外部库。
我不打算这个问题来吸引基于意见的答案,而是要知道是否有一个特定的原因,为什么这个功能在Python中不可用,或者是否将来会实现。
答案 0 :(得分:0)
另一种获取预期输出的方法,可以将其实现为与list相关的python函数。
a = [-2,1,5,3,8,5,6]
b = [1,2,5]
def getvalues(original_list, indexes_list):
new_list = []
for i in indexes_list:
new_list.append(original_list[i])
return new_list
result = getvalues(a, b)
print(result)