Python | Padalinkite sąrašą į sąrašus pagal tam tikrą reikšmę
„Python“ padalyti sąrašą į posąraščius pagal tam tikrą reikšmę. Idėja yra kartoti pradinį sąrašą ir sugrupuoti elementus į antrinius sąrašus, kai tik aptinkama nurodyta reikšmė. Dažnai reikia manipuliuoti ir apdoroti sąrašus, ypač kai dirbama su dideliais duomenų kiekiais. Viena dažna operacija yra sąrašo padalijimas į kelis antrinius sąrašus pagal konkrečią reikšmę. Jei norite sujungti komponentus arba analizuoti skirtingus duomenų pogrupius, ši procedūra gali būti naudinga.
Būdai, kaip suskaidyti sąrašus į sąrašus pagal būklę
Čia pateikiami skirtingi metodai, kuriuos galime naudoti norėdami suskaidyti sąrašus į sąrašus pagal nurodytą sąlygą.
- Paprastos iteracijos naudojimas
- Sąrašo supratimo naudojimas
- Naudojant kilpoms
- Rekursijos naudojimas
- Iterto įrankių naudojimas
- Naudojant NumPy
Padalinkite sąrašą Python naudojant iteraciją
Į Python , mes suskaidysime sąrašą į sąrašus pagal konkrečią reikšmę naudodami Paprasta iteracija . Kodas inicijuoja sąrašą ir tam tikrą reikšmę. Tada jis suskaido sąrašą į posąraščius pagal konkrečią reikšmę, kartodamas kiekvieną sąrašo elementą.
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))> |
Išvestis
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]]
Padalinkite Python sąrašą į dalis, naudodami sąrašo supratimą
Python, mes suskaidysime sąrašą į sąrašus pagal tam tikrą reikšmę Sąrašo supratimas . Šią problemą galima išspręsti iš dviejų dalių, pirmoje dalyje gauname indeksų sąrašą, pagal kurį reikia atlikti padalijimą naudojant išvardinti funkcija. Ir tada mes galime sujungti reikšmes pagal indeksus naudojant užtrauktukas ir sąrašo pjaustymas.
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))> |
Išvestis
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]]
Padalinkite sąrašą Python naudodami For Loops
Python, mes suskaidysime sąrašą į sąrašus pagal tam tikrą reikšmę už kilpą s. Kodas paverčia pradinį sąrašą į eilutės atvaizdavimą ir pakeičia konkrečią kainą skyrikliu (*). Tada jis suskaido pakeistą styga ant skyriklio, kad įgytų eilutes.
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))> |
Išvestis
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]]
Padalinkite sąrašą į kelis sąrašus naudodami Recursion
Python, mes suskaidysime sąrašą į sąrašus pagal tam tikrą reikšmę Rekursija . Kodas apibrėžia rekursyvą funkcija vadinamas split_list_recursive, kuris padalija duotą sąrašą į posąraščius, kai tik atsiranda tam tikra reikšmė. Jis naudoja rekursiją ir du laikinus sąrašus (result ir temp_list), kad saugotų gautus posąraščius.
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)> |
Išvestis
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]]
Išskaidykite sąrašą Python naudodami Itertools
Python, mes suskaidysime sąrašą į sąrašus pagal tam tikrą reikšmę iterto įrankiai . Kodas apibrėžia funkciją, vadinamą split_list, kuri kaip įvestį paima sąrašą ir reikšmę. Jis naudoja itertools.groupby() funkcija grupuoti iš eilės elementus sąrašą pagal tai, ar jie lygūs nurodytai vertei.
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)> |
Išvestis
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]]
Padalinkite sąrašą Python naudodami NumPy
Python, mes suskirstysime sąrašą į sąrašus pagal konkrečią reikšmę naudojant Numpy. Kodas įveda sąrašą ir tam tikrą reikšmę. Tada jis paverčia sąrašą į a NumPy masyvą ir suranda indeksus, kuriuose atsiranda konkreti reikšmė.
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)>>> , test_list)> print> (> 'The list after splitting by a value:'> , result)> |
Išvestis
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]