def is_isogram(phrase):
scrubbed = [ltr.lower() for ltr in phrase if ltr.isalpha()]
return len(set(scrubbed)) == len(scrubbed)
For this approach, a list comprehension is used to iterate the letters in the input phrase string.
- In the code example,
ltris the name given to each letter iterated in theforloop. - The result of each iteration is
ltr.lower(), which is thelowercased letter being iterated. All of the letters are lowercased so that letters of different cases will become the same letter for comparison purposes, sinceAandaare considered to be the same letter. - The iterable part of the list comprehension is the input phrase.
- The letters are filtered by the use of the optional conditional logic:
if ltr.isalpha().isalpha()returnsTrueif the letter being iterated is alphabetic.
When the list comprehension is done, the scrubbed variable will be a list holding only lowercased alphabetic characters.
- A
setis constructed from the scrubbed list and itslenis compared with thelenof the the scrubbed list. Since asetholds only unique values, the phrase will be an isogram if its number of unique letters is the same as its total number of letters. The function returns whether the number of unique letters equals the total number of letters. - For
Alphait would returnFalse, becauseais considered to repeatA, so the number of unique letters inAlphais4, and the total number of letters inAlphais5. - For
Bravoit would returnTrue, since the number of unique letters inBravois5, and the total number of letters inBravois5.
4th Sep 2024
·
Found it useful?