In Python, per dividere un elenco in sottoliste in base a un valore particolare. L'idea è di scorrere l'elenco originale e raggruppare gli elementi in sottoelenchi ogni volta che si incontra il valore specificato. Spesso è necessario manipolare ed elaborare elenchi, soprattutto quando si ha a che fare con grandi quantità di dati. Un'operazione frequente è la divisione di una lista in più sottoliste in base ad un valore specifico. Quando desideri combinare insieme componenti o analizzare diversi sottoinsiemi di dati, questa procedura potrebbe essere utile.
Modi per dividere gli elenchi in elenchi in base alla condizione
Ecco i diversi metodi che possiamo utilizzare per dividere gli elenchi in elenchi in base alla condizione specificata.
- Utilizzando l'iterazione semplice
- Utilizzando la comprensione delle liste
- Utilizzo dei cicli for
- Utilizzando la ricorsione
- Utilizzando Itertools
- Utilizzando NumPy
Elenco diviso in Python utilizzando l'iterazione
In Pitone , divideremo un elenco in elenchi in base al valore particolare utilizzando Iterazione semplice . Il codice inizializza un elenco e un valore particolare. Quindi divide l'elenco in sottoelenchi in base al valore particolare eseguendo un'iterazione su ciascun elemento dell'elenco.
Python3
test_list> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> print> (> 'The original list : '> +> str> (test_list))> particular_value> => 5> result> => []> temp_list> => []> for> i> in> test_list:> > if> i> => => particular_value:> > temp_list.append(i)> > result.append(temp_list)> > temp_list> => []> > else> :> > temp_list.append(i)> result.append(temp_list)> print> (> 'The list after splitting by a value : '> +> str> (result))> |
>
>
Produzione
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Dividi un elenco Python in blocchi utilizzando la comprensione delle liste
In Python, divideremo una lista in liste in base al valore particolare utilizzando Comprensione degli elenchi . Questo problema può essere risolto in due parti, nella prima parte otteniamo l'elenco degli indici in base al quale deve essere eseguita la suddivisione enumerare funzione. E poi possiamo unire i valori in base agli indici utilizzando cerniera lampo ed elencare le affettature.
proposizione logica
Python3
test_list> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> print> (> 'The original list : '> +> str> (test_list))> # using list comprehension Split list into lists by particular value> size> => len> (test_list)> idx_list> => [idx> +> 1> for> idx, val> in> > enumerate> (test_list)> if> val> => => 5> ]> res> => [test_list[i: j]> for> i, j> in> > zip> ([> 0> ]> +> idx_list, idx_list> +> > ([size]> if> idx_list[> -> 1> ] !> => size> else> []))]> print> (> 'The list after splitting by a value : '> +> str> (res))> |
>
>
Produzione
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Elenco diviso in Python utilizzando i cicli For
In Python, divideremo una lista in liste in base al valore particolare utilizzando per ciclo S. Il codice converte l'elenco originale in una rappresentazione di stringa e sostituisce il prezzo specifico con un delimitatore (*). Quindi divide il modificato corda sul delimitatore per acquisire sottostringhe.
Python3
test_list> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> print> (> 'The original list : '> +> str> (test_list))> x> => list> (> map> (> str> , test_list))> x> => ' '> .join(x)> x> => x.replace(> '5'> ,> '5*'> )> y> => x.split(> '*'> )> res> => []> for> i> in> y:> > i> => i.strip()> > i> => i.split(> ' '> )> > b> => []> > for> j> in> i:> > b.append(> int> (j))> > res.append(b)> print> (> 'The list after splitting by a value : '> +> str> (res))> |
>
>
Produzione
The original list : [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value : [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Dividere un elenco in più elenchi utilizzando la ricorsione
In Python, divideremo una lista in liste in base al valore particolare utilizzando Ricorsione . Il codice definisce un ricorsivo funzione chiamato split_list_recursive che divide un dato elenco in sottoliste ogni volta che si verifica un particolare valore. Utilizza la ricorsione e due elenchi temporanei (result e temp_list) per memorizzare i sottoelenchi risultanti.
Python3
def> split_list_recursive(test_list, result, temp_list, particular_value):> > if> not> test_list:> > result.append(temp_list)> > return> > if> test_list[> 0> ]> => => particular_value:> > result.append(temp_list> +> [particular_value])> > split_list_recursive(test_list[> 1> :], result, [], particular_value)> > else> :> > split_list_recursive(test_list[> 1> :],> > result,> > temp_list> +> [test_list[> 0> ]],> > particular_value)> test_list> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> particular_value> => 5> result> => []> print> (> 'The original list:'> , test_list)> split_list_recursive(test_list, result, [], particular_value)> print> (> 'The list after splitting by value:'> , result)> |
>
>
Produzione
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]]>
Elenco diviso in Python utilizzando Itertools
In Python, divideremo una lista in liste in base al valore particolare utilizzando itertools . Il codice definisce una funzione chiamata split_list che accetta una lista e un valore come input. Utilizza il itertools.groupby() funzione per raggruppare elementi consecutivi nel file elenco in base al fatto che siano uguali al valore indicato.
Python3
import> itertools> def> split_list(lst, val):> > return> [> list> (group)> for> k,> > group> in> > itertools.groupby(lst,> lambda> x: x> => => val)> if> not> k]> original_lst> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> split_lst> => split_list(original_lst,> 6> )> print> (> 'The original list:'> , original_lst)> print> (> 'The list after splitting by a value:'> , split_lst)> |
>
>
Produzione
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [4, 5], [5, 4]]>
Elenco diviso in Python utilizzando NumPy
In Python, divideremo una lista in elenchi per valore particolare utilizzando Numpy. Il codice accetta una lista e un valore particolare come input. Quindi converte l'elenco in un file NumPy array e trova gli indici in cui si verifica il valore particolare.
Python3
import> numpy as np> test_list> => [> 1> ,> 4> ,> 5> ,> 6> ,> 4> ,> 5> ,> 6> ,> 5> ,> 4> ]> particular_value> => 5> arr> => np.array(test_list)> idx> => np.where(arr> => => particular_value)[> 0> ]> subarrays> => np.split(arr, idx> +> 1> )> result> => [subarray.tolist()> for> subarray> in> subarrays> if> len> (subarray)>> 0> ]> print> (> 'The original list:'> , test_list)> print> (> 'The list after splitting by a value:'> , result)> |
>
>
Produzione
The original list: [1, 4, 5, 6, 4, 5, 6, 5, 4] The list after splitting by a value: [[1, 4, 5], [6, 4, 5], [6, 5], [4]>