W Pythonie, aby podzielić listę na podlisty na podstawie określonej wartości. Pomysł polega na iteracji po oryginalnej liście i grupowaniu elementów w podlisty za każdym razem, gdy napotkana zostanie określona wartość. Często konieczne jest manipulowanie listami i ich przetwarzanie, szczególnie w przypadku dużych ilości danych. Częstą operacją jest podzielenie listy na kilka podlist według określonej wartości. Jeśli chcesz połączyć ze sobą komponenty lub przeanalizować różne podzbiory danych, ta procedura może być pomocna.
Sposoby dzielenia list na listy na podstawie warunku
Oto różne metody, których możemy użyć do podzielenia list na listy w oparciu o podany warunek.
- Korzystanie z prostej iteracji
- Używanie rozumienia list
- Używanie pętli for
- Korzystanie z rekurencji
- Korzystanie z Itertools
- Korzystanie z NumPy
Podziel listę w Pythonie za pomocą iteracji
W Pyton , podzielimy listę na listy według określonej wartości, używając Prosta iteracja . Kod inicjuje listę i określoną wartość. Następnie dzieli listę na podlisty w oparciu o konkretną wartość, iterując po każdym elemencie listy.
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))> |
>
>
Wyjście
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]]>
Podziel listę Pythona na fragmenty, korzystając ze zrozumienia list
W Pythonie podzielimy listę na listy według określonej wartości za pomocą Rozumienie listy . Problem ten można rozwiązać w dwóch częściach, w pierwszej części otrzymujemy listę indeksów, według których należy dokonać podziału wyliczać funkcjonować. A potem możemy połączyć wartości według wskaźników za pomocą zamek błyskawiczny i wycinanie listy.
Python3
jak wstrzyknąć próbną klasę abstrakcyjną
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))> |
>
>
Wyjście
np. nazwa użytkownika
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]]>
Podziel listę w Pythonie za pomocą pętli For
W Pythonie podzielimy listę na listy według określonej wartości za pomocą dla pętli S. Kod konwertuje oryginalną ofertę na reprezentację w postaci ciągu znaków i zastępuje konkretną cenę ogranicznikiem (*). Następnie dzieli zmienione strunowy na ograniczniku, aby uzyskać podciągi.
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))> |
>
>
Wyjście
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]]>
Podziel listę na wiele list za pomocą rekurencji
W Pythonie podzielimy listę na listy według określonej wartości za pomocą Rekurencja . Kod definiuje rekurencję funkcjonować o nazwie split_list_recursive, która dzieli daną listę na podlisty za każdym razem, gdy wystąpi określona wartość. Używa rekurencji i dwóch list tymczasowych (result i temp_list) do przechowywania wynikowych podlist.
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)> |
>
>
Wyjście
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]]>
Podziel listę w Pythonie za pomocą Itertools
W Pythonie podzielimy listę na listy według określonej wartości za pomocą itertools . Kod definiuje funkcję o nazwie split_list, która pobiera listę i wartość jako dane wejściowe. Używa itertools.groupby() funkcja grupująca kolejne elementy w lista na podstawie tego, czy są one równe podanej wartości.
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)> |
zablokować aplikację na Androida
>
>
Wyjście
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]]>
Podziel listę w Pythonie za pomocą NumPy
W Pythonie podzielimy listę na listy według określonej wartości za pomocą Numpy. Kod pobiera listę i określoną wartość jako dane wejściowe. Następnie konwertuje listę na plik NumPy array i znajduje indeksy, w których występuje dana wartość.
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)> |
>
>
Wyjście
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]>