I'm sure there's a nice way to do this in Python, but I'm pretty new to the language, so forgive me if this is an easy one!
I have a list, and I'd like to pick out certain values from that list. The values I want to pick out are the ones whose indexes in the list are specified in another list.
For example:
indexes = [2, 4, 5]
main_list = [0, 1, 9, 3, 2, 6, 1, 9, 8]
the output would be:
[9, 2, 6]
(i.e., the elements with indexes 2, 4 and 5 from main_list).
I have a feeling this should be doable using something like list comprehensions, but I can't figure it out (in particular, I can't figure out how to access the index of an item when using a list comprehension).
I think Yuval A's solution is a pretty clear and simple. But if you actually want a one line list comprehension:
This will return a list of the objects, using a list comprehension.
As an alternative to a list comprehension, you can use
map
withlist.__getitem__
. For large lists you should see better performance:For a lazy iterator, you can just use
map(L.__getitem__, idx)
. Note in Python 2.7,map
returns a list, so there is no need to pass tolist
.