list( myBigList[i] for i in [87, 342, 217, 998, 500] )
我将答案与python 2.5.2进行了比较:
19.7微秒: [ myBigList[i] for i in [87, 342, 217, 998, 500] ]
20.6 USEC: map(myBigList.__getitem__, (87, 342, 217, 998, 500))
22.7 USEC: itemgetter(87, 342, 217, 998, 500)(myBigList)
24.6 USEC: list( myBigList[i] for i in [87, 342, 217, 998, 500] )
请注意,在Python 3中,第1个已更改为与第4个相同。
另一种选择是以a开头,numpy.array
它允许通过列表或a进行索引numpy.array
:
>>> import numpy
>>> myBigList = numpy.array(range(1000))
>>> myBigList[(87, 342, 217, 998, 500)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: invalid index
>>> myBigList[[87, 342, 217, 998, 500]]
array([ 87, 342, 217, 998, 500])
>>> myBigList[numpy.array([87, 342, 217, 998, 500])]
array([ 87, 342, 217, 998, 500])
在tuple
不工作方式相同那些片。