V Pythonu, Chcete-li rozdělit seznam na podseznamy na základě konkrétní hodnoty. Smyslem je iterovat původní seznam a seskupovat prvky do dílčích seznamů, kdykoli narazí na zadanou hodnotu. Často je nutné se seznamy manipulovat a zpracovávat je, zejména při práci s velkým množstvím dat. Častou operací je rozdělení seznamu do několika podseznamů podle konkrétní hodnoty. Tento postup může být užitečný, pokud chcete kombinovat komponenty dohromady nebo analyzovat různé podmnožiny dat.
Způsoby, jak rozdělit seznamy na seznamy na základě stavu
Zde jsou různé metody, které můžeme použít k rozdělení seznamů do seznamů na základě dané podmínky.
- Použití jednoduché iterace
- Použití porozumění seznamu
- Použití smyček for
- Použití rekurze
- Použití Itertools
- Pomocí NumPy
Rozdělit seznam v Pythonu pomocí iterace
v Krajta , rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí Jednoduchá iterace . Kód inicializuje seznam a konkrétní hodnotu. Poté rozdělí seznam na podseznamy na základě konkrétní hodnoty iterací přes každý prvek seznamu.
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))> |
>
>
Výstup
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]]>
Rozdělte seznam Python na bloky pomocí funkce List Comprehension
V Pythonu rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí Porozumění seznamu . Tento problém lze vyřešit ve dvou částech, v první části získáme seznam indexů, pomocí kterých je třeba provést rozdělení vyjmenovat funkce. A pak můžeme spojit hodnoty podle indexů pomocí zip a krájení seznamu.
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))> |
>
>
Výstup
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]]>
Rozdělit seznam v Pythonu pomocí For Loops
V Pythonu rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí pro smyčku s. Kód převede původní výpis do řetězcové reprezentace a nahradí konkrétní cenu oddělovačem (*). Poté rozdělí změněné tětiva na oddělovač získat podřetězce.
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))> |
mylivecricket v živém kriketu
>
>
Výstup
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]]>
Rozdělte seznam na více seznamů pomocí rekurze
V Pythonu rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí Rekurze . Kód definuje rekurzivní funkce nazvaný split_list_recursive, který rozdělí daný seznam na podseznamy, kdykoli se objeví určitá hodnota. K uložení výsledných dílčích seznamů používá rekurzi a dva dočasné seznamy (výsledky a seznam_temp).
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)> |
>
>
Výstup
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]]>
Rozdělit seznam v Pythonu pomocí Itertools
V Pythonu rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí itertools . Kód definuje funkci nazvanou split_list, která bere jako vstup seznam a hodnotu. Používá se itertools.groupby() funkce pro seskupení po sobě jdoucích prvků v seznam podle toho, zda se rovnají dané hodnotě.
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)> |
>
>
Výstup
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]]>
Rozdělit seznam v Pythonu pomocí NumPy
V Pythonu rozdělíme seznam na seznamy podle konkrétní hodnoty pomocí Numpy. Kód bere jako vstup seznam a konkrétní hodnotu. Poté převede seznam na a NumPy pole a najde indexy, kde se konkrétní hodnota vyskytuje.
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)> |
>
>
jak zjistit, zda vás někdo zablokoval na Androidu
Výstup
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]>