Печать 1 списка вместо нескольких списков

#python #python-3.x

Вопрос:

Поэтому я определил функцию, которая проверяет наличие гласных на входе и печатает их в списке, она работает, но печатает несколько списков, когда я хочу, чтобы она печатала только один, например ([‘i’, ‘e’, ‘e’, ‘a’, ‘e’])

Вот мой код

 vowels = 'aeiou'

sentence = input()

def VowelChecker(sentece):
    for letter in sentence:
        if letter in vowels:
            print([letter])
 

Есть какие-нибудь идеи?

Ответ №1:

Вам нужно создать список, а затем добавить к нему, в конечном итоге распечатав его один раз после цикла:

 def print_vowels(sentence):
    vowels = 'aeiou'
    vowels_in_sentence = []

    for letter in sentence:
        if letter in vowels:
            vowels_in_sentence.append(letter)
    
    print(vowels_in_sentence)
 

Другим способом достижения этой цели было бы использование filter встроенного:

 def print_vowels(sentence):
    vowels = 'aeuio'
    vowels_in_sentence = filter(lambda letter: letter in vowels, sentence)
    print(vowels_in_sentence)
 

Ответ №2:

Вы также можете использовать понимание списка:

 vowels = 'aeiou'

sentence = "icebreaker"

def VowelChecker(sentece):
    print([c for c in sentence if c in vowels])

VowelChecker(sentence)
# ['i', 'e', 'e', 'a', 'e']
 

Ответ №3:

Может быть, вы можете создать новый список и каждый раз, когда вы находите письмо, добавлять его в этот список. В конце верните этот список, чтобы вы могли его распечатать.

 vowels = 'aeiou'

sentence = input()

def VowelChecker(sentece):
    res = []
    for letter in sentence:
        if letter in vowels:
            res.append(letter)
    return res

print(VowelChecker(sentence))
 

Комментарии:

1. нет необходимости использовать две for петли. Что делает этот код, он повторяет каждую букву, а затем пытается повторить каждую букву (переменную, которую вы вызываете word ), которая является char и не может быть повторена