Dividi lista in blocchi in Python
- Dividi la lista in Python in blocchi usando il metodo di comprensione della lista
-
Dividi la lista in Python in blocchi usando il metodo
itertools
-
Dividi la lista in Python in blocchi usando la funzione
lambda
-
Dividi la lista in Python in blocchi usando il metodo
lambda
eislice
-
Dividi la lista in Python in blocchi usando il metodo
NumPy
- Dividi lista in blocchi in Python utilizzando una funzione definita dall’utente
Una delle strutture dati Python che possono contenere valori o elementi misti al suo interno è chiamata liste. Questo articolo introdurrà vari modi per dividere una lista in blocchi. Puoi utilizzare qualsiasi esempio di codice che soddisfi le tue specifiche.
Dividi la lista in Python in blocchi usando il metodo di comprensione della lista
Possiamo usare la comprensione delle liste per dividere una lista Python in blocchi. È un modo efficiente per incapsulare le operazioni per rendere il codice più facile da capire.
Di seguito viene fornito il codice di esempio completo.
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
n = 3
output = [test_list[i : i + n] for i in range(0, len(test_list), n)]
print(output)
Produzione:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
range(0, len(test_list), n)
restituisce un intervallo di numeri che iniziano da 0 e terminano in len(test_list)
con un passo di n
. Ad esempio, range(0, 10, 3)
restituirà (0, 3, 6, 9)
.
test_list[i:i + n]
ottiene la parte della lista che inizia con l’indice i
e finisce esclusivamente con i + n
. L’ultimo pezzo della lista suddivisa è test_list[9]
, ma gli indici calcolati test_list[9:12]
non solleveranno un errore ma saranno uguali a test_list[9]
.
Dividi la lista in Python in blocchi usando il metodo itertools
Questo metodo fornisce un generatore che deve essere iterato utilizzando un cicli for
. Un generatore è un modo efficiente per descrivere un iteratore.
from itertools import zip_longest
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def group_elements(n, iterable, padvalue="x"):
return zip_longest(*[iter(iterable)] * n, fillvalue=padvalue)
for output in group_elements(3, test_list):
print(output)
Produzione:
('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10', 'x', 'x')
[iter(iterable)]*n
genera un iteratore e ripetuto n
volte nell’lista. Un round robin di ogni iteratore viene quindi effettivamente eseguito da izip-longest
; poiché questo è un iteratore simile, ciascuna di queste chiamate è avanzata, con il risultato che ciascuna di tali zip-round-robin produce una tupla di n oggetti.
Dividi la lista in Python in blocchi usando la funzione lambda
È possibile utilizzare una funzione di base lambda
per dividere l’lista in una certa dimensione o in blocchi più piccoli. Questa funzione funziona sulla lista originale e sulla variabile di dimensione N, itera su tutti gli elementi della lista e la divide in blocchi di dimensione N.
Di seguito viene fornito il codice di esempio completo:
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
x = 3
def final_list(test_list, x):
return [test_list[i : i + x] for i in range(0, len(test_list), x)]
output = final_list(test_list, x)
print("The Final List is:", output)
Produzione:
The Final List is: [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
Dividi la lista in Python in blocchi usando il metodo lambda
e islice
Una funzione lambda
può essere utilizzata con la funzione islice
e produrre un generatore che itera sulla lista. La funzione islice
crea un iteratore che estrae gli elementi selezionati dall’iterabile. Se l’inizio è diverso da zero, gli elementi iterabili verranno saltati prima che venga raggiunto l’inizio. Gli elementi vengono quindi restituiti consecutivamente a meno che non venga impostato un passaggio superiore a quello che comporta il salto di elementi.
Di seguito viene fornito il codice di esempio completo:
from itertools import islice
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def group_elements(lst, chunk_size):
lst = iter(lst)
return iter(lambda: tuple(islice(lst, chunk_size)), ())
for new_list in group_elements(test_list, 3):
print(new_list)
Produzione:
('1', '2', '3')
('4', '5', '6')
('7', '8', '9')
('10',)
Dividi la lista in Python in blocchi usando il metodo NumPy
La libreria NumPy
può anche essere utilizzata per dividere l’lista in blocchi di dimensioni N. La funzione array_split()
divide l’array in sotto-array di dimensioni specifiche n
.
Di seguito viene fornito il codice di esempio completo:
import numpy
n = numpy.arange(11)
final_list = numpy.array_split(n, 4)
print("The Final List is:", final_list)
La funzione arange
ordina i valori secondo l’argomento dato e la funzione array_split()
produce la lista / sotto-array in base al parametro dato in essa come parametro.
Produzione:
The Final List is: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([ 9, 10])]
Dividi lista in blocchi in Python utilizzando una funzione definita dall’utente
Questo metodo itera sulla lista e produce blocchi consecutivi di dimensioni n dove n si riferisce al numero in corrispondenza del quale è necessario implementare una divisione. In questa funzione viene utilizzata una parola chiave yield
che consente di arrestare e ripristinare una funzione quando il valore cambia quando l’esecuzione viene sospesa. Questa è la distinzione importante da una funzione normale. Una funzione normale non può tornare al punto in cui era stata interrotta. La funzione è chiamata Generatore quando usiamo un’istruzione yield
in una funzione. Un generatore produce o restituisce valori e non può essere denominato come una semplice funzione, ma piuttosto come un iterabile, cioè utilizzando un bucle.
Il codice di esempio completo è il seguente.
test_list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
def split_list(lst, n):
for i in range(0, len(lst), n):
yield lst[i : i + n]
n = 3
output = list(split_list(test_list, n))
print(output)
Produzione:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9'], ['10']]
Articolo correlato - Python List
- Converti un dizionario in una lista in Python
- Rimuovi i duplicati dall'lista in Python
- Rimuovi tutte le occorrenze di un elemento da una lista in Python
- Ottieni la media di una lista in Python
- Qual è la differenza tra i metodi di elencazione, aggiungere ed estendere
- Come convertire una lista in stringa in Python