logo

Python | Opdel listen i lister efter bestemt værdi

I Python, At opdele en liste i underlister baseret på en bestemt værdi. Ideen er at gentage den originale liste og gruppere elementer i underlister, når den angivne værdi stødes på. Det er ofte nødvendigt at manipulere og behandle lister, især når der er tale om store mængder data. En hyppig operation er at opdele en liste i flere underlister i henhold til en bestemt værdi. Når du ønsker at kombinere komponenter sammen eller analysere forskellige delmængder af dataene, kan denne procedure være nyttig.

Måder at opdele lister i lister baseret på tilstand

Her er de forskellige metoder, vi kan bruge til at opdele lister i lister baseret på den givne tilstand.



  • Brug af simpel iteration
  • Brug af listeforståelse
  • Bruges til sløjfer
  • Brug af rekursion
  • Brug af Itertools
  • Bruger NumPy

Opdel liste i Python ved hjælp af iteration

I Python , vil vi opdele en liste i lister efter bestemt værdi ved hjælp af Simpel iteration . Koden initialiserer en liste og en bestemt værdi. Den opdeler derefter listen i underlister baseret på den bestemte værdi ved at iterere over hvert element på 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))>

>

>

Produktion

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

Opdel en Python-liste i Chunks ved hjælp af Listeforståelse

I Python vil vi opdele en liste i lister efter en bestemt værdi ved hjælp af Listeforståelse . Dette problem kan løses i to dele, i den første del får vi den indeksliste, efter hvilken opdeling skal udføres vha. opregne fungere. Og så kan vi samle værdierne i henhold til indekserne vha lynlås og listeskæring.

Python3




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

>

>

Produktion

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

Opdel liste i Python ved hjælp af For Loops

I Python vil vi opdele en liste i lister efter en bestemt værdi ved hjælp af for sløjfe s. Koden konverterer den originale notering til en strengrepræsentation og erstatter den bestemte pris med en afgrænser (*). Det opdeler så det ændrede snor på afgrænseren for at erhverve delstrenge.

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

>

>

Produktion

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

Opdel en liste i flere lister ved hjælp af rekursion

I Python vil vi opdele en liste i lister efter en bestemt værdi ved hjælp af Rekursion . Koden definerer en rekursiv fungere kaldet split_list_recursive, der opdeler en given liste i underlister, når en bestemt værdi forekommer. Den bruger rekursion og to midlertidige lister (resultat og temp_list) til at gemme de resulterende underlister.

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

>

>

Produktion

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

Opdel liste i Python ved hjælp af Itertools

I Python vil vi opdele en liste i lister efter en bestemt værdi ved hjælp af itertools . Koden definerer en funktion kaldet split_list, der tager en liste og en værdi som input. Den bruger itertools.groupby() funktion til at gruppere på hinanden følgende elementer i liste baseret på om de er lig med den givne værdi.

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

>

>

Produktion

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

Opdel liste i Python ved hjælp af NumPy

I Python vil vi opdele en liste i lister efter særlig værdi ved hjælp af Numpy. Koden tager en liste og en bestemt værdi som input. Det konverterer derefter listen til en NumPy array og finder de indekser, hvor den bestemte værdi 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)>

>

>

Produktion

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