5 votes

Indexation des tableaux en Python

Je suis débutant et j'apprends le python. Je me demandais quelque chose.

Cela me donne le deuxième élément :

list = [1,2,3,4]
list.index(2)
2

Mais quand j'ai essayé ça :

list = [0] * 5
list[2] = [1,2,3,4]
list.index[4]

Je reçois une erreur. Existe-t-il un moyen de récupérer l'indice d'un élément d'un tableau, quelle que soit la liste dans laquelle il est placé ? Je sais que c'est possible avec les dictionnaires :

info = {first:1,second:2,third:3}
for i in info.values:
print i
1
2
3

Existe-t-il quelque chose comme ça pour les listes ?

14voto

icktoofay Points 60218

En index ne fait pas ce que vous attendez. Pour obtenir un élément à un index, vous devez utiliser la méthode [] la syntaxe :

>>> my_list = ['foo', 'bar', 'baz']
>>> my_list[1]  # indices are zero-based
'bar'

index est utilisé pour obtenir un index d'un élément :

>>> my_list.index('baz')
2

Si vous vous demandez s'il y a un moyen d'obtenir index pour effectuer une récursion dans des sous-listes, la réponse est non, car il faudrait qu'elle renvoie quelque chose que l'on puisse ensuite passer dans la fonction [] y [] ne va jamais dans les sous-listes.

5voto

Idrisi_Kasim Points 81

List est une fonction intégrée, ne l'utilisez pas comme nom de variable, c'est contraire au protocole, utilisez plutôt lst.

Pour accéder à un élément d'une liste, utilisez [ ] avec le numéro d'index de cet élément.

lst = [1,2,3,4]
lst[0]
1

un autre exemple de la même chose

lst = [1,2,3,4]
lst[3]
4

Utilisez ( :) le point-virgule pour accéder aux éléments de la série. Le premier numéro d'index avant le point-virgule est Inclus et Exclus après le point-virgule.

lst[0:3]
[1, 2, 3]

Si le numéro d'index avant le point-virgule n'est pas spécifié, tous les numéros sont inclus jusqu'au début de la liste par rapport au numéro d'index après le point-virgule.

lst[:2]
[1, 2]

Si le numéro d'index après le point-virgule n'est pas spécifié, tous les numéros sont inclus jusqu'à la fin de la liste par rapport au numéro d'index avant le point-virgule.

lst[1:]
[2, 3, 4]

Si nous ajoutons un point-virgule, le nombre de champs spécifiques sera traité comme des étapes.

lst[0:4:2]
[1, 3]

Ceci est utilisé pour trouver le numéro d'index spécifique d'un élément.

lst.index(3)
2

C'est l'une de mes fonctions préférées. La fonction pop extrait l'élément sur la base de l'index fourni et retire également cet élément de la liste principale.

lst.pop(1)
2

Maintenant voir la liste principale l'élément est enlevé :)

lst
[1, 3, 4]

Pour extraire les nombres pairs d'une liste donnée, utilisez ceci, je prends ici un nouvel exemple pour une meilleure compréhension.

lst = [1,1,2,3,4,44,45,56]

import numpy as np

lst = np.array(lst)
lst = lst[lst%2==0]
list(lst)
[2, 4, 44, 56]

Pour extraire les nombres impairs d'une liste donnée, utilisez ceci (Notez où j'ai assingné 1 plutôt que 0)

lst = [1,1,2,3,4,44,45,56]

import numpy as np

lst = np.array(lst)
lst = lst[lst%2==1]
list(lst)
[1, 1, 3, 45]

Bon apprentissage... :)

3voto

sapi Points 3800

Dans votre deuxième exemple, votre liste va ressembler à ceci :

[0, 0, [1, 2, 3, 4], 0, 0]

Il n'y a donc aucun élément 4 dans la liste.

En effet, lorsque vous définissez list[2] vous modifiez le troisième élément, et non la mise à jour des autres éléments de la liste.

Si vous souhaitez remplacer une plage de valeurs dans la liste, utilisez la notation de découpage, par exemple list[2:] (pour "chaque élément du troisième au dernier").

Plus généralement, le .index fonctionne sur les identités. La méthode suivante fonctionnera donc, car vous demandez à python où se trouve l'objet de liste particulier que vous avez inséré dans la liste :

lst = [0]*5
lst2 = [1,2,3,4]
lst[2] = lst2
lst.index(lst2) # 2

3voto

Burhan Khalid Points 50578

La réponse à votre question est non, mais vous avez d'autres problèmes avec votre code.

Premièrement, n'utilisez pas list comme nom de variable, car c'est aussi le nom de la fonction intégrée list .

Deuxièmement, list.index[4] est différent de list.index(4) ; les deux donneront des erreurs dans votre cas, mais ce sont deux opérations différentes.

1voto

Veerabahu Points 41

Si vous souhaitez obtenir l'index d'un élément particulier, la fonction index vous sera utile. Cependant, enumerate fera la même chose que l'exemple du dictionnaire,

>>> l=['first','second','third']
>>> for index,element in enumerate(l):
...     print index,element
... 

sortie

0 first
1 second
2 third

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X