Как извлечь элементы из списка, используя индексы в Python? - PullRequest
31 голосов
/ 12 апреля 2010

Если у вас есть список в Python и вы хотите извлечь элемент с индексами, скажем 1, 2 и 5, в новый список, как вы это делаете?

Вот как я это сделал, но я не очень доволен

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

лучше?

В общем, при наличии кортежа с индексами, как использовать этот кортеж для извлечения соответствующих элементов из списка, в конечном итоге с дублированием (например, с помощью кортежа (1,1,2,1,5) 12,11,15])

Ответы [ 5 ]

69 голосов
/ 12 апреля 2010

Возможно, используйте это:

[a[i] for i in (1,2,5)]
# [11, 12, 15]
6 голосов
/ 12 апреля 2010

Я думаю, вы ищете это:

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

result_list = [elements[i] for i in indices]    
5 голосов
/ 12 апреля 2010

Попробуйте

numbers = range(10, 16)
indices = (1, 1, 2, 1, 5)

result = [numbers[i] for i in indices]
3 голосов
/ 19 августа 2015

Использовать прямую индексацию массива Numpy, как в MATLAB, Julia, ...

a = [10, 11, 12, 13, 14, 15];
s = [1, 2, 5] ;

import numpy as np
list(np.array(a)[s])
# [11, 12, 15]

Еще лучше, просто оставайтесь с массивами Numpy

a = np.array([10, 11, 12, 13, 14, 15])
a[s]
#array([11, 12, 15])
2 голосов
/ 12 апреля 2010

Границы проверены:

 [a[index] for index in (1,2,5,20) if 0 <= index < len(a)]
 # [11, 12, 15] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...