Python Language Accéder aux valeurs de la liste


Exemple

Les listes Python sont indexées à zéro et agissent comme des tableaux dans d'autres langages.

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

Tenter d'accéder à un index en dehors des limites de la liste IndexError une IndexError .

lst[4]  # IndexError: list index out of range

Les indices négatifs sont interprétés comme comptant à partir de la fin de la liste.

lst[-1]  # 4
lst[-2]  # 3
lst[-5]  # IndexError: list index out of range

Ceci est fonctionnellement équivalent à

lst[len(lst)-1]  # 4

Les listes permettent d'utiliser la notation de tranche comme lst[start:end:step] . Le résultat de la notation de tranche est une nouvelle liste contenant des éléments du start index à la end-1 . Si les options sont omis start par défaut au début de la liste, end à la fin de la liste et l' step 1:

lst[1:]      # [2, 3, 4]
lst[:3]      # [1, 2, 3]
lst[::2]     # [1, 3]
lst[::-1]    # [4, 3, 2, 1] 
lst[-1:0:-1] # [4, 3, 2]
lst[5:8]     # [] since starting index is greater than length of lst, returns empty list
lst[1:10]    # [2, 3, 4] same as omitting ending index

Dans cette optique, vous pouvez imprimer une version inversée de la liste en appelant

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

Lorsque vous utilisez des longueurs d'étape de montants négatifs, l'index de départ doit être supérieur à l'index de fin, sinon le résultat sera une liste vide.

lst[3:1:-1] # [4, 3]

L'utilisation d'indices d'étape négatifs équivaut au code suivant:

reversed(lst)[0:2] # 0 = 1 -1
                   # 2 = 3 -1

Les indices utilisés sont inférieurs de 1 à ceux utilisés en indexation négative et sont inversés.

Tranchage avancé

Lorsque des listes sont découpées, la __getitem__() de l'objet liste est appelée, avec un objet slice . Python a une méthode de tranche intégrée pour générer des objets de tranche. Nous pouvons l'utiliser pour stocker une tranche et la réutiliser plus tard comme ça,

data = 'chandan purohit    22 2000'  #assuming data fields of fixed length 
name_slice = slice(0,19)
age_slice = slice(19,21)
salary_slice = slice(22,None)

#now we can have more readable slices
print(data[name_slice]) #chandan purohit     
print(data[age_slice]) #'22'
print(data[salary_slice]) #'2000'

Cela peut être très utile en fournissant des fonctionnalités de découpage à nos objets en __getitem__ dans notre classe.