V tem programu se boste naučili šteti število samoglasnikov v nizu z uporabo razumevanja slovarja in seznama.
Če želite razumeti ta primer, morate poznati naslednje programske teme Python:
- Python za zanko
- Python Strings
- Nizne metode
Izvorna koda: Uporaba slovarja
# 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)
Izhod
('o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3)
Tu smo vzeli niz, shranjen v ip_str. Z uporabo metode casefold()
jo naredimo primerno za primerjave brez primerov. V osnovi ta metoda vrne majhno verzijo niza.
Z metodo slovarja fromkeys()
izdelamo nov slovar z vsakim samoglasnikom kot ključem in vsemi vrednostmi, enakimi 0. To je inicializacija štetja.
Nato iteracijo nad vhodnim nizom s pomočjo zanke for.
V vsaki ponovitvi preverimo, ali je znak v slovarskih tipkah ( True
če je samoglasnik), in vrednost povečamo za 1, če je res.
Izvorna koda: Uporaba seznama in razumevanja slovarja
# 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)
Izhod iz tega programa je enak kot zgoraj.
Tukaj smo v razumevanje slovarja ugnezdili razumevanje seznama za štetje samoglasnikov v eno vrstico.
Razumevanje slovarja se izvaja za vse znake samoglasnikov in razumevanje seznama znotraj razumevanja slovarja preveri, ali se katerikoli znak v nizu ujema s tem samoglasnikom.
Na koncu se ustvari seznam z 1 s za število vsakega samoglasniškega znaka. sum()
Metoda se uporablja za izračun vsoto elementov za vsakega seznama.
Ta program pa je počasnejši, saj se za vsak samoglasnik preletimo po celotnem vhodnem nizu.