How to extract elements from a list using indices in Python?


Question

If you have a list in python, and want to extract elements at indices 1, 2 and 5 into a new list, how would you do this?

This is how I did it, but I'm not very satisfied:

>>> a
[10, 11, 12, 13, 14, 15]
>>> [x[1] for x in enumerate(a) if x[0] in [1,2,5]]
[11, 12, 15]

Is there a better way?

More in general, given a tuple of indices, how would you use this tuple to extract the corresponding elements from a list, even with duplication (e.g. tuple (1,1,2,1,5) produces [11,11,12,11,15]).

1
31
8/10/2019 11:16:35 AM

Accepted Answer

Perhaps use this:

[a[i] for i in (1,2,5)]
# [11, 12, 15]
71
4/12/2010 11:37:42 AM

I think you're looking for this:

elements = [10, 11, 12, 13, 14, 15]
indices = (1,1,2,1,5)

result_list = [elements[i] for i in indices]    

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon