Explicitly select items from a list or tuple
indexing, list, python, select, tuples
Solution
list( myBigList[i] for i in [87, 342, 217, 998, 500] )
I compared the answers with python 2.5.2:
19.7 usec: `[ 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] )`
Note that in Python 3, the 1st was changed to be the same as the 4th.
Another option would be to start out with a `numpy.array` which allows indexing via a list or 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])
The `tuple` doesn't work the same way as those are slices.
Problem
I have the following Python list (can also be a tuple): ``` myList = ['foo', 'bar', 'baz', 'quux'] ``` I can say ``` >>> myList[0:3] ['foo', 'bar', 'baz'] >>> myList[::2] ['foo', 'baz'] >>> myList[1::2] ['bar', 'quux'] ``` How do I explicitly pick out items whose indices have no specific patterns? For example, I want to select `[0,2,3]`. Or from a very big list of 1000 items, I want to select `[87, 342, 217, 998, 500]`. Is there some Python syntax that does that? Something that looks like: ``` >>> myBigList[87, 342, 217, 998, 500] ```