如何以任意顺序访问列表/元组的元素?

时间:2014-04-11 08:38:49

标签: python list indexing tuples iterable

使用Python的切片运算符,可以实现:

a = [0, 10, 20, 30, 40, 50]
>>> a[0:5:2]
[0, 20, 40]

如果我想以任意顺序访问列表的元素,该怎么办?我想做的是这样的事情:

>>> a([1,0,3,5]) #MATLAB notation!
[10, 0, 30, 50]

I know how to do this with numpy,但如果可能的话,我宁愿不导入任何套餐。)

2 个答案:

答案 0 :(得分:2)

您可以使用operator.itemgetter,就像这样

from operator import itemgetter
print itemgetter(1, 0, 3, 5)(a)
# (10, 0, 30, 50)

您甚至可以将其存储在变量中,稍后再使用。例如,

custom_picker = itemgetter(1, 0, 3, 5)
custom_picker(a)

答案 1 :(得分:1)

您可以按如下方式使用:

b = [1,0,3,5]
x = [a[i] for i in b]

>>> x
[10, 0, 30, 50]

正如你所说,你宁愿不导入任何包裹。