Python Language Accedere ai valori di lista


Esempio

Gli elenchi Python sono indicizzati a zero e si comportano come matrici in altre lingue.

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

Il tentativo di accedere a un indice al di fuori dei limiti dell'elenco IndexError un IndexError .

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

Gli indici negativi sono interpretati come conteggi dalla fine della lista.

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

Questo è funzionalmente equivalente a

lst[len(lst)-1]  # 4

Gli elenchi consentono di utilizzare la notazione delle lst[start:end:step] come lst[start:end:step] . L'output della notazione di sezione è un nuovo elenco contenente elementi dall'indice start a end-1 . Se le opzioni vengono omessi start default è all'inizio della lista, end alla fine della lista e step a 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

Con questo in mente, puoi stampare una versione invertita della lista chiamando

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

Quando si utilizzano lunghezze di passi di importi negativi, l'indice di partenza deve essere maggiore dell'indice finale altrimenti il ​​risultato sarà una lista vuota.

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

L'utilizzo degli indici step negativi è equivalente al seguente codice:

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

Gli indici utilizzati sono 1 in meno di quelli utilizzati nell'indicizzazione negativa e sono invertiti.

Affettatura avanzata

Quando gli elenchi vengono __getitem__() viene chiamato il metodo __getitem__() dell'oggetto elenco, con un oggetto slice . Python ha un metodo slice incorporato per generare oggetti slice. Possiamo usarlo per memorizzare una sezione e riutilizzarla in un secondo momento in questo modo,

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'

Questo può essere di grande utilità fornendo funzionalità di slicing ai nostri oggetti sovrascrivendo __getitem__ nella nostra classe.