V tomto programu se naučíte počítat počet jednotlivých samohlásek v řetězci pomocí slovníku a porozumění seznamu.
Abychom porozuměli tomuto příkladu, měli byste znát následující témata programování v Pythonu:
- Python pro smyčku
- Pythonové řetězce
- Řetězcové metody
Zdrojový kód: Používání slovníku
# Program to count the number of each vowels # string of vowels vowels = 'aeiou' ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # make a dictionary with each vowel a key and value 0 count = ().fromkeys(vowels,0) # count the vowels for char in ip_str: if char in count: count(char) += 1 print(count)
Výstup
('o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3)
Zde jsme vzali řetězec uložený v ip_str. Pomocí této metody casefold()
je vhodná pro bezkonkurenční srovnání. V zásadě tato metoda vrací verzi řetězce s malými písmeny.
Metodu slovníku používáme fromkeys()
ke konstrukci nového slovníku s každou samohláskou jako jejím klíčem a všemi hodnotami rovnými 0. Toto je inicializace počtu.
Dále iterujeme vstupní řetězec pomocí smyčky for.
V každé iteraci zkontrolujeme, zda je znak v klíčích slovníku (je- True
li to samohláska), a zvýšíme hodnotu o 1, pokud je to pravda.
Zdrojový kód: Použití seznamu a výkladového slovníku
# Using dictionary and list comprehension ip_str = 'Hello, have you tried our tutorial section yet?' # make it suitable for caseless comparisions ip_str = ip_str.casefold() # count the vowels count = (x:sum((1 for char in ip_str if char == x)) for x in 'aeiou') print(count)
Výstup z tohoto programu je stejný jak je uvedeno výše.
Zde jsme vnořili porozumění seznamu do slovníku, abychom spočítali samohlásky v jednom řádku.
Porozumění slovníku běží pro všechny znaky samohlásky a porozumění seznamu uvnitř slovníku s porozuměním zkontroluje, zda se nějaké znaky v řetězci shodují s konkrétní samohláskou.
Na konci je vygenerován seznam s 1 s pro číslo každého znaku samohlásky. sum()
Metoda se používá pro výpočet součtu prvků pro každý seznam.
Tento program je však pomalejší, protože procházíme celým vstupním řetězcem pro každou samohlásku.