Python | Del listen i lister etter spesiell verdi
I Python, å dele en liste i underlister basert på en bestemt verdi. Ideen er å iterere gjennom den opprinnelige listen og gruppere elementer i underlister hver gang den angitte verdien påtreffes. Det er ofte nødvendig å manipulere og behandle lister, spesielt når det er snakk om store datamengder. En hyppig operasjon er å dele en liste i flere underlister i henhold til en bestemt verdi. Når du ønsker å kombinere komponenter sammen eller analysere ulike delsett av dataene, kan denne prosedyren være nyttig.
Måter å dele lister i lister basert på tilstand
Her er de forskjellige metodene vi kan bruke for å dele lister i lister basert på den gitte tilstanden.
- Bruke enkel iterasjon
- Bruke listeforståelse
- Brukes til løkker
- Bruker rekursjon
- Bruker Itertools
- Bruker NumPy
Del liste i Python ved hjelp av iterasjon
I Python , vil vi dele en liste i lister etter spesiell verdi ved å bruke Enkel iterasjon . Koden initialiserer en liste og en bestemt verdi. Den deler deretter listen i underlister basert på den spesielle verdien ved å iterere over hvert element i listen.
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))> |
Produksjon
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]]
Del en Python-liste i biter ved hjelp av listeforståelse
I Python vil vi dele en liste i lister etter spesiell verdi ved å bruke Listeforståelse . Dette problemet kan løses i to deler, i den første delen får vi indekslisten som splitting må utføres etter ved hjelp av oppregne funksjon. Og så kan vi slå sammen verdiene i henhold til indeksene ved hjelp av glidelås og listeskjæring.
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))> |
Produksjon
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]]
Del liste i Python ved å bruke For Loops
I Python vil vi dele en liste i lister etter spesiell verdi ved å bruke for løkke s. Koden konverterer den opprinnelige oppføringen til en strengrepresentasjon og erstatter den bestemte prisen med en skilletegn (*). Den deler deretter det endrede streng på skilletegnet for å skaffe delstrenger.
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))> |
Produksjon
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]]
Del en liste i flere lister ved hjelp av rekursjon
I Python vil vi dele en liste i lister etter spesiell verdi ved å bruke Rekursjon . Koden definerer en rekursiv funksjon kalt split_list_recursive som deler en gitt liste i underlister når en bestemt verdi oppstår. Den bruker rekursjon og to midlertidige lister (resultat og temp_list) for å lagre de resulterende underlistene.
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)> |
Produksjon
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]]
Del liste i Python ved hjelp av Itertools
I Python vil vi dele en liste i lister etter spesiell verdi ved å bruke itertools . Koden definerer en funksjon kalt split_list som tar en liste og en verdi som input. Den bruker itertools.groupby() funksjon for å gruppere påfølgende elementer i liste basert på om de er lik den gitte verdien.
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)> |
Produksjon
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]]
Del liste i Python ved hjelp av NumPy
I Python vil vi dele en liste inn i lister etter spesiell verdi ved å bruke Numpy. Koden tar en liste og en bestemt verdi som input. Den konverterer deretter listen til en NumPy array og finner indeksene der den bestemte verdien forekommer.
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)> |
Produksjon
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]