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]
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.arraywhich allows indexing via a list or anumpy.array:The
tupledoesn’t work the same way as those are slices.