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不工作方式相同那些片。



