I Python, att dela upp en lista i underlistor baserat på ett visst värde. Tanken är att iterera genom den ursprungliga listan och gruppera element i underlistor närhelst det angivna värdet påträffas. Det är ofta nödvändigt att manipulera och bearbeta listor, särskilt när det handlar om stora mängder data. En frekvent operation är att dela upp en lista i flera underlistor enligt ett specifikt värde. När du vill kombinera komponenter eller analysera olika delmängder av data, kan denna procedur vara till hjälp.
Sätt att dela upp listor i listor baserat på tillstånd
Här är de olika metoderna vi kan använda för att dela upp listor i listor baserat på det givna villkoret.
- Använder enkel iteration
- Använder listförståelse
- Används för loopar
- Använda Rekursion
- Använder Itertools
- Använder NumPy
Dela lista i Python med iteration
I Pytonorm , kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av Enkel iteration . Koden initierar en lista och ett visst värde. Den delar sedan upp listan i underlistor baserat på det specifika värdet genom att iterera över varje element i listan.
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]]>
Dela upp en Python-lista i bitar med hjälp av listförståelse
I Python kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av Listförståelse . Detta problem kan lösas i två delar, i den första delen får vi indexlistan med vilken split måste utföras med räkna upp fungera. Och sedan kan vi slå samman värdena enligt indexen med hjälp av blixtlås och listskiva.
Python3
delsträngsfunktion java
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]]>
Dela lista i Python med For Loops
I Python kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av för slinga s. Koden omvandlar den ursprungliga noteringen till en strängrepresentation och ersätter det specifika priset med en avgränsare (*). Det delar sedan upp det ändrade sträng på avgränsaren för att förvärva delsträngar.
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]]>
Dela upp en lista i flera listor med hjälp av Rekursion
I Python kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av Rekursion . Koden definierar en rekursiv fungera kallas split_list_recursive som delar upp en given lista i underlistor närhelst ett visst värde inträffar. Den använder rekursion och två temporära listor (resultat och temp_list) för att lagra de resulterande underlistorna.
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]]>
Dela lista i Python med Itertools
I Python kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av itertools . Koden definierar en funktion som kallas split_list som tar en lista och ett värde som indata. Den använder itertools.groupby() funktion för att gruppera på varandra följande element i lista baserat på om de är lika med det givna värdet.
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)> |
>
>
d flip flop
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]]>
Dela lista i Python med hjälp av NumPy
I Python kommer vi att dela upp en lista i listor efter särskilt värde med hjälp av Numpy. Koden tar en lista och ett visst värde som indata. Den konverterar sedan listan till en NumPy array och hittar indexen där det specifika värdet förekommer.
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]>