logo

Pitone | Dividi l'elenco in elenchi in base a un valore particolare

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]>