Как вывести все нужные числа в функции пайтон

lst = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
def min5(a):
    for el in a:
        while el < 5:
            return el
print(min5(lst))

Выводит только первое число


Ответы (5 шт):

Автор решения: CrazyElf

Используйте yield вместо return, ну и не while, а if, конечно. И результат ещё нужно будет "развернуть", например оператором *:

lst = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
def min5(a):
    for el in a:
        if el < 5:
            yield el
print(*min5(lst))
# 1 1 2 3
→ Ссылка
Автор решения: Dark Space

Можно воспользоваться списковым включением:

def min5(list_):
    return [item for item in list_ if item < 5]
    
print(min5([1, 3, 7, 4, 5, 0])) # [1, 3, 4, 0]

Что за списковые включения?

Списковое включение (List Comprehension) - Краткая синтаксическая конструкция для создания списков. Своего рода "синтаксический сахар"

[ <Выражения для каждого> for <Элемента> in <Из последовательности> ]

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

[ <Выражения для каждого> for <Элемента> in <Из последовательности> if <Условие отбора>]

Они на самом деле мощнее, чем кажутся и это явно не весь функционал, на который они способны. Но ваши условия это покрывает

→ Ссылка
Автор решения: wchistow

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

lst = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
def min5(a):
    result = []
    for el in a:
        if el < 5:
            result.append(el)
    return result
print(min5(lst))

Вывод:

[1, 1, 2, 3]
→ Ссылка
Автор решения: Maksim Alekseev

Ну или через generator expression

def min5(a):
    return (num for num in a if num < 5)

lst = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
print(*min5(lst))

result

1 1 2 3
→ Ссылка
Автор решения: MarianD

Ваша проблема состоит в том, что команда первая встреча команды returnвопреки тому, что она находится в цикле — по своей природе прекращает вес вызов функции. Второй встречи этой команды к сожалению уже не будет.

И так

  • вместо команды return el используйте print(el), и затем
  • вместо print(min5(lst)) примените просто min5(lst).
→ Ссылка