logo

Python | Rozdělte seznam do seznamů podle konkrétní hodnoty

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