1
votes

Comment choisir un élément de chaque liste 1D dans une liste 2D en fonction d'une liste d'indices?

Le i-ème élément de notre liste d'indices indique l'index de la i-ème liste 1D dans la liste 2D que nous voulons connaître.

Si notre liste 2D et notre liste d'indices ressemble à ceci: p>

res = []
for i in range(len(list_ix)):
    res.append(a[i][list_ix[i]])

Le résultat souhaité est [7,9].

Actuellement, je le fais en utilisant une boucle comme ci-dessous:

a = [[1,7,3],[9,0,8]]

list_ix = [1, 0]


0 commentaires

3 Réponses :


0
votes

Utilisez enumerate qui permet vous deux pour obtenir une valeur dans une liste et suivre votre position actuelle.

a = [[1,7,3],[9,0,8]]

list_ix = [1, 0]

res = []
for i, outer_list_index in enumerate(list_ix):
    res.append(a[i][outer_list_index])

print(res)


0 commentaires

1
votes

Vous pouvez utiliser la fonction zip () :

[7, 9]

Impressions:

a = [[1,7,3],[9,0,8]]    
list_ix = [1, 0]

out = [l[i] for i, l in zip(list_ix, a)]
print(out)


0 commentaires

1
votes

Je pense que cela pourrait être fait de cette façon:

res = [a[idx][element] for idx, element in enumerate(list_ix)]

En savoir plus sur enumerate ici: https://docs.python.org/3/library/functions.html# énumérer


0 commentaires