logo

Python | Împărțiți lista în liste după o anumită valoare

În Python, Pentru a împărți o listă în subliste bazate pe o anumită valoare. Ideea este să iterați lista originală și să grupați elementele în sub-liste ori de câte ori se întâlnește valoarea specificată. Este adesea necesar să manipulați și să procesați liste, mai ales atunci când aveți de-a face cu cantități mari de date. O operațiune frecventă este împărțirea unei liste în mai multe sub-liste în funcție de o anumită valoare. Când doriți să combinați componente sau să analizați diferite subseturi de date, această procedură poate fi utilă.

Modalități de împărțire a listelor în liste în funcție de condiție

Iată diferitele metode pe care le putem folosi pentru a împărți listele în liste în funcție de condiția dată.



  • Utilizarea iterației simple
  • Utilizarea listei de înțelegere
  • Folosind bucle for
  • Utilizarea recursiunii
  • Folosind Itertools
  • Folosind NumPy

Lista împărțită în Python folosind Iterație

În Piton , vom împărți o listă în liste după o anumită valoare folosind Iterație simplă . Codul inițializează o listă și o anumită valoare. Apoi împarte lista în subliste în funcție de valoarea particulară, iterând peste fiecare element al listei.

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

>

bucla for în c
>

Ieșire

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

Împărțiți o listă Python în bucăți folosind Lista de înțelegere

În Python, vom împărți o listă în liste după o anumită valoare folosind Liste de înțelegere . Această problemă poate fi rezolvată în două părți, în prima parte obținem lista de index prin care trebuie efectuată împărțirea folosind enumera funcţie. Și apoi putem uni valorile în funcție de indici folosind fermoar și tăierea listei.

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

>

>

Ieșire

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

Împărțiți lista în Python folosind For Loops

În Python, vom împărți o listă în liste după o anumită valoare folosind pentru buclă s. Codul convertește lista originală într-o reprezentare șir și înlocuiește prețul particular cu un delimitator (*). Apoi împarte cele schimbate şir pe delimitator pentru a dobândi subșiruri.

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

>

>

Ieșire

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

Împărțiți o listă în liste multiple utilizând recursiunea

În Python, vom împărți o listă în liste după o anumită valoare folosind Recursiune . Codul definește un recursiv funcţie numit split_list_recursive care împarte o listă dată în subliste ori de câte ori apare o anumită valoare. Folosește recursiunea și două liste temporare (result și temp_list) pentru a stoca sublistele rezultate.

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

conversia șirului de caractere în întreg în java

>

>

Ieșire

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

Lista împărțită în Python folosind Itertools

În Python, vom împărți o listă în liste după o anumită valoare folosind iertools . Codul definește o funcție numită split_list care ia ca intrare o listă și o valoare. Acesta folosește iertools.groupby() funcția de grupare a elementelor consecutive în listă pe baza faptului că acestea sunt egale cu valoarea dată.

Python3

exemplu format json




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

>

>

Ieșire

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

Împărțiți lista în Python folosind NumPy

În Python, vom împărți o listă în liste după o anumită valoare folosind Numpy. Codul preia o listă și o anumită valoare ca intrare. Apoi convertește lista într-un NumPy matrice și găsește indicii în care apare valoarea anume.

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)>>>>]> print>(>'The original list:'>, test_list)> print>(>'The list after splitting by a value:'>, result)>

>

>

Ieșire

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