Jak filtrovat seznam v Pythonu správným způsobem, jak ze svých dat získat více

V Pythonu je jedním z nejoblíbenějších způsobů ukládání sekvenčních nebo uspořádaných dat pomocí seznamů. Seznam v Pythonu je uspořádaná, měnitelná, vestavěná datová struktura, která se používá k ukládání kolekce dat. Položky uložené v seznamu jsou indexovány od nuly a uživatelé mohou obsah seznamu po jeho vytvoření změnit.

Skutečnost, že položky v seznamu jsou indexovány, umožňuje ukládání duplicitních položek v seznamu. Seznamy v Pythonu mohou také obsahovat prvky různých datových typů. Položky v seznamu jsou odděleny čárkami a uzavřeny v hranatých závorkách.

Zde jsou příklady seznamů v Pythonu:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Seznamy jsou velmi univerzální datovou strukturou a s daty uloženými v seznamech můžete provádět mnoho operací. Jednou z běžných a užitečných operací prováděných na seznamech je filtrování dat uložených v seznamu.

Proč je důležité filtrování seznamů

Filtrování seznamu znamená extrahování konkrétních podmnožin dat, které splňují daná kritéria. Například by nás mohla zajímat pouze sudá čísla v seznamu obsahujícím čísla 1 až 10. Abychom taková data ze seznamu extrahovali, stačí seznam filtrovat a získat čísla, která jsou přesně dělitelná dvěma.

Filtrování je užitečné zejména při manipulaci s daty a analýze dat, protože umožňuje odstraňovat nežádoucí položky ze seznamů, vytvářet nové seznamy obsahující položky splňující daná kritéria a extrahovat data splňující určité podmínky.

Některé aplikace filtrování seznamů v reálném světě zahrnují:

  • Ověření dat – Při práci se seznamem můžete chtít pracovat pouze s daty, která splňují daná kritéria. Například v seznamu uživatelů vás mohou zajímat uživatelé s křestním jménem i příjmením. Filtrování vám umožní ověřit a ověřit data v seznamu před jejich zpracováním. Vyhnete se tak práci s daty, která nesplňují vaše požadavky.
  • Čištění dat – Vzhledem k tomu, že seznamy mohou ukládat různé typy dat, není vzácné zjistit, že seznamy obsahují nežádoucí data, která vás nezajímají. Například v seznamu obsahujícím názvy vás nemusí zajímat číselné hodnoty seznam. Pomocí filtrování můžete odstranit nežádoucí data.
  • Analýza dat – Filtrování dat je zvláště užitečné při analýze dat, protože vám umožňuje zaměřit se na konkrétní podmnožiny dat, což vám umožňuje snadno identifikovat vzorce a trendy. Například v seznamu studentů můžete odfiltrovat studenty a studentky a použít výsledek při analýze dat. Můžete dokonce filtrovat podle věku, umístění a třídy. To vám umožní vyvodit užitečnější závěry z konkrétních podmnožin dat v seznamu
  Jak odstranit hypertextové odkazy z Dokumentů Google

Filtrování seznamů je velmi užitečná funkce, protože vám dává kontrolu nad daty uloženými v seznamu a umožňuje vám pracovat pouze s daty, která vás zajímají.

Cílení na konkrétní podmnožiny dat uložených v seznamu je velmi užitečné, protože zjednodušuje zpracování dat a analýzu dat, díky čemuž jsou procesy lepší, rychlejší a přesnější.

Použití funkce filter().

Funkce filter() je vestavěná funkce Pythonu, kterou lze použít k iteraci přes iterovatelnou položku, jako je seznam, n-tice, množinu nebo slovník, a extrahovat položky v iteraci, které splňují danou podmínku.

Iterovatelný v Pythonu je objekt, který lze procházet jeho prvky jeden po druhém. Iterace přes iterovatelnou vrátí položky v iterovatelné jedné po druhé.

Syntaxe funkce filtru je následující:

filter(function, iterable)

funkce – funkce Pythonu, která obsahuje podmínku filtrování

iterovatelný – iterovatelný, který bude filtrován. V tomto případě použijeme seznam.

Funkce filter() převezme předávanou funkci a aplikuje ji na každou položku v předané iteraci, čímž otestuje podmínku filtrování proti položce. Pokud položka splňuje podmínku, to znamená, že vrací booleovskou hodnotu true, která bude vybrána funkcí filter(). V případě, že podmínku nesplňuje, položka není vybrána.

Funkce filter() vrací iterovatelnou položku s položkami, které splnily podmínku filtrování. Pomocí funkce list() můžete vytvořit nový seznam obsahující položky, které splnily podmínku filtrování.

Chcete-li vidět funkci filter() v akci, zvažte níže uvedený seznam, který je filtrován, aby se vybrala čísla menší než 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Výše uvedený kód vytiskne následující výsledek:

[15, 46, 24, 37]

Pomocí smyčky for

V Pythonu je smyčka for příkaz toku řízení používaný k iteraci přes sekvenční datové struktury, jako je seznam, n-tice, řetězce a pole. Cyklus for opakovaně provádí blok kódu pro každou položku v sekvenci.

  Jak propojit Spotify s Facebookem

Obecná syntaxe pro smyčku for je následující:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

item – proměnná představující aktuální položku zpracovávanou v iteraci cyklu

iterable – posloupnost, přes kterou se opakuje cyklus for. V tomto případě seznam

Chcete-li filtrovat seznam pomocí cyklu for, budeme muset předat naši podmínku filtrování v sekci pro provedení bloku kódu. Takto bude každá položka vyhodnocena, zda splňuje danou podmínku.

Když k filtrování seznamu používáte cyklus for, musíte také vytvořit prázdný seznam, kam budete připojovat hodnoty, které vyhovují vaší podmínce filtrování.

Abychom to viděli v akci, vyfiltrujme seznam čísel, abychom získali čísla menší než 50 pomocí cyklu for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Výše uvedený kód vytiskne následující výsledek:

[15, 46, 24, 37]

Pomocí jiného seznamu

Seznam můžete filtrovat pomocí jiného tak, že zkontrolujete, zda se položka v seznamu, který chcete filtrovat, nachází v jiném seznamu. Zvažte například následující dva seznamy

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Ve výše uvedeném seznamu nazvaném písmena můžeme určit, které položky v seznamu nejsou samohlásky, a to tak, že zkontrolujeme, zda se položka vyskytuje v seznamu samohlásek či nikoli. Pokud se položka v seznamu samohlásek neobjeví, nejedná se o samohlásku.

Tímto způsobem můžeme získat všechny znaky v písmenech, které nejsou samohlásky. Chcete-li to provést, spusťte následující kód:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Výše uvedený kód vytiskne následující výstup, který obsahuje znaky v písmenech, které nejsou samohlásky.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Používání funkce List Comprehension

V Pythonu nabízí porozumění seznamu kratší, stručnější a čistší syntaxi pro vytváření nového seznamu z existujícího seznamu. Porozumění seznamu má schopnost zredukovat více řádků kódu použitého k vytvoření nového seznamu z jiného seznamu pomocí cyklu for na jeden řádek.

  Jak vymazat mezipaměť a soubory cookie v prohlížeči Chrome

Je to proto, že při použití porozumění seznamu definujete a přidáváte položky do nového seznamu všechny na jednom řádku.

Syntaxe pro pochopení seznamu je následující:

new_list = [expression for element in iterable if condition]

new_list – nový seznam obsahující prvky přidané pomocí přehledu seznamu

výraz – operace, která bude aplikována na každou položku iterovatelné

item – název proměnné představující aktuálně aktivní položku v iteraci

iterovatelný – iterovatelný, ze kterého budou položky vybírány.

if podmínka – volitelná část, kde lze přidat podmínku k filtrování položek, aby se do nově vytvářeného seznamu přidaly pouze ty, které splňují danou podmínku.

Abychom viděli porozumění seznamu v praxi a jak moc to může zjednodušit proces filtrování a vytváření nového seznamu, použijeme seznam písmen a samohlásek k odfiltrování položek v seznamu písmen, které nejsou v seznamu samohlásek. Chcete-li to provést, spusťte následující kód:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Výstup výše uvedeného kódu je uveden níže:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Výstup je podobný předchozímu příkladu, který používal smyčku for k filtrování seznamu pomocí jiného seznamu. K dosažení stejného výsledku však používá méně řádků kódu.

Závěr

Při práci s daty v Pythonu je běžnou operací, kterou musíte provést, filtrování dat z iterovatelného, ​​jako je seznam. Jedná se o velmi užitečný krok v analýze a zpracování dat, protože vám umožňuje pracovat pouze s daty, která jsou relevantní pro prováděnou operaci nebo zpracování.

Velmi oblíbenou sekvenční datovou strukturou v Pythonu je seznam. V případě, že se přistihnete, že pracujete se seznamem a potřebujete jej filtrovat, zvažte použití některé z metod zvýrazněných v článku.

Můžete si také přečíst o tom, jak používat funkce lambda v Pythonu s příklady.