web-dev-qa-db-fra.com

Comment extraire des éléments d'une liste à l'aide d'index en Python?

Si vous avez une liste en python et que vous souhaitez extraire des éléments aux indices 1, 2 et 5 dans une nouvelle liste, comment feriez-vous cela?

C'est comme ça que je l'ai fait, mais je ne suis pas très satisfait:

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

Y a-t-il une meilleure façon?

Plus généralement, étant donné un Tuple d'indices, comment utiliseriez-vous ce Tuple pour extraire les éléments correspondants d'une liste, même avec duplication (par exemple Tuple (1,1,2,1,5) produit [11,11,12,11,15]).

31
Stefano Borini

Peut-être utiliser ceci:

[a[i] for i in (1,2,5)]
# [11, 12, 15]
71
unutbu

Je pense que vous cherchez ceci:

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

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

Essayer

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

result = [numbers[i] for i in indices]
5
Juho Vepsäläinen

Utilisez l'indexation directe de tableaux Numpy, comme dans 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]

Mieux encore, restez avec les tableaux Numpy

a = np.array([10, 11, 12, 13, 14, 15])
a[s]
#array([11, 12, 15])
3
Dmitri

Limites vérifiées:

 [a[index] for index in (1,2,5,20) if 0 <= index < len(a)]
 # [11, 12, 15] 
2
Charles Beattie