Базовый фильтр возвращает пустой список - PullRequest
0 голосов
/ 29 июня 2018
def only_upper(t):
    res = []
    for s in t:
        if s.isupper():
            res.append(s)
        return res
t = ['a', 'B', 'c', 'D']

print only_upper(t)

Я пытаюсь выяснить, почему это возвращает пустой список. Результат выглядит так в консоли:

[]

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

В качестве альтернативы описанному выше списку встроена функция filter (на случай, если в вашей книге это еще дальше):

list(filter(lambda x: x.isupper(), ['a', 'B', 'c', 'D']))
0 голосов
/ 29 июня 2018

Вы возвращаетесь сразу после первого элемента цикла for, а не после его завершения. Отмените отступ в return заявлении, и с вами все будет в порядке:

def only_upper(t):
    res = []
    for s in t:
        if s.isupper():
            res.append(s)
    return res # Here!

Также стоит упомянуть, что часто проще написать фильтры, подобные этим, в списках, вместо реализации всей логики:

print([x for x in t if x.isupper()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...