I dette programmet lærer du å telle antallet for hver vokal i en streng ved hjelp av ordbok og listeforståelse.
For å forstå dette eksemplet, bør du ha kunnskap om følgende Python-programmeringsemner:
- Python for Loop
- Python-strenger
- Strengmetoder
Kildekode: Bruk av ordbok
# 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)
Produksjon
('o': 5, 'i': 3, 'a': 2, 'e': 5, 'u': 3)
Her har vi tatt en streng lagret i ip_str. Ved hjelp av metoden casefold()
gjør vi den egnet for tilfellerløse sammenligninger. I utgangspunktet returnerer denne metoden en versjon av strengen med lavere versjon.
Vi bruker ordbokmetoden fromkeys()
til å konstruere en ny ordbok med hver vokal som nøkkel og alle verdier lik 0. Dette er initialiseringen av tellingen.
Deretter itererer vi over inngangsstrengen ved hjelp av en for loop.
I hver iterasjon sjekker vi om tegnet er i ordbokstastene ( True
hvis det er vokal) og øker verdien med 1 hvis den er sann.
Kildekode: Bruke en liste og en ordbokforståelse
# 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)
Den Utgangen av dette programmet er det samme som ovenfor.
Her har vi nestet en listeforståelse i en ordbokforståelse for å telle vokalene i en enkelt linje.
Ordbokens forståelse kjører for alle vokaltegn, og listeforståelsen inne i ordbokens forståelse sjekker om noen tegn i strengen samsvarer med den aktuelle vokalen.
På slutten genereres en liste med 1 s for antallet av hvert vokaltegn. Den sum()
metoden brukes til å beregne summen av elementene for hver liste.
Imidlertid er dette programmet tregere når vi gjentar over hele inngangsstrengen for hver vokal.