Come tagliare un elenco da un elemento n alla fine in Python?
Domanda
Ho qualche problema a capire come tagliare le liste di Python, è illustrato come segue:
>>> test = range(10)
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[3:-1]
[3, 4, 5, 6, 7, 8]
>>> test[3:0]
[]
>>> test[3:1]
[]
>>> test
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Per quanto ne so, Python Slice significa lst [inizio: fine] e include inizio, escluso fine. Quindi, come potrei fare per trovare il "resto" di un elenco a partire da un elemento n?
Grazie mille per tutto il tuo aiuto!
Soluzione
Puoi lasciare un'estremità della sezione aperta non specificando il valore.
test[3:] = [3, 4, 5, 6, 7, 8, 9]
test[:3] = [0, 1, 2]
Altri suggerimenti
Se si utilizza una variabile come endpoint dell'intervallo, è possibile utilizzare None
.
start = 4
end = None
test[start:end]
Ometti semplicemente la fine.
test[n:]
Uscire dalla fine funziona ancora quando vuoi saltarne un po ':
range(10)[3::2] => [3, 5, 7, 9]
Restituisce una porzione dell'elenco dopo un valore iniziale:
list = ['a','b','c','d']
start_from = 'b' # value you want to start with
slice = list[list.index(start_from):] # returns slice from starting value to end
Puoi anche utilizzare Nessuno
parola chiave per il parametro end durante lo slicing. Ciò restituirebbe anche gli elementi fino alla fine dell'elenco (o qualsiasi sequenza come tupla, stringa, ecc.)
# for list
In [20]: list_ = list(range(10))
In [21]: list_[3:None]
Out[21]: [3, 4, 5, 6, 7, 8, 9]
# for string
In [22]: string = 'mario'
In [23]: string[2:None]
Out[23]: 'rio'
# for tuple
In [24]: tuple_ = ('Rose', 'red', 'orange', 'pink', 23, [23, 'number'], 12.0)
In [25]: tuple_[3:None]
Out[25]: ('pink', 23, [23, 'number'], 12.0)