Как отфильтровать строки, начинающиеся с любого гласного? [Python] - PullRequest
0 голосов
/ 19 мая 2019

Строка «банан». Я создал все подстроки и теперь хочу отфильтровать те, которые начинаются или не начинаются с гласных. Я хочу использовать любую операцию, но не знаю, как ее использовать.

l = ['', 'an', 'anan', 'na', 'ana', 'n', 'a', 'anana', 'ba', 'b', 'ban', 'nan', 'banan', 'banana', 'nana', 'bana']
vowels = 'aeiou'
for word in l:
    if word.startswith( any(vowels)): #this gives error
        print("this word starts with vowel")
        print(word)

Ответы [ 3 ]

1 голос
/ 19 мая 2019

Вы можете использовать набор для представления vowels вместо одной строки, поэтому время поиска будет O(1), а не O(n), в основном оно должно быть немного быстрее:

words = ['', 'an', 'anan', 'na', 'ana', 'n', 'a', 'anana', 'ba', 'b', 'ban', 'nan', 'banan', 'banana', 'nana', 'bana']
vowels = {'a', 'e', 'i', 'o', 'u'}
for w in words:
  if len(w) > 0 and w[0] in vowels:
    print(f'"{w}" starts with a vowel')

Вывод:

"an" starts with a vowel
"anan" starts with a vowel
"ana" starts with a vowel
"a" starts with a vowel
"anana" starts with a vowel
1 голос
/ 19 мая 2019

Вы можете указать tuple разрешенных пусков для .startswith:

l = ['', 'an', 'anan', 'na', 'ana', 'n', 'a', 'anana', 'ba', 'b', 'ban', 'nan', 'banan', 'banana', 'nana', 'bana']
vowels = ('a','e','i','o','u')
for word in l:
    if word.startswith(vowels):
        print("this word starts with vowel")
        print(word)

Вывод:

this word starts with vowel
an
this word starts with vowel
anan
this word starts with vowel
ana
this word starts with vowel
a
this word starts with vowel
anana
1 голос
/ 19 мая 2019
l = ['', 'an', 'anan', 'na', 'ana', 'n', 'a', 'anana', 'ba', 'b', 'ban', 'nan', 'banan', 'banana', 'nana', 'bana']
vowels = 'aeiou'
for word in l:
    if any(word.startswith(v) for v in vowels):
        print("this word starts with vowel")
        print(word)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...