Почему мой код возвращает только первый элемент из моего списка? - PullRequest
0 голосов
/ 30 мая 2019

Почему при вызове функции я получаю только первый напечатанный элемент из списка, но когда я заменяю "return" на "print" внутри функции и затем вызываю ее, я получаю полный список?

def show_magicians(magicians):

    for magician in magicians:
        return(magician)

magicians = ["a", "b", "c", "d", "e","f", "g"]
print(show_magicians(magicians))

Ответы [ 3 ]

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

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

Примерно так:

def show_magicians(magicians):

    new_list = []
    for magician in magicians:
        new_list.append(magician)

    return new_list

magicians = ["a", "b", "c", "d", "e","f", "g"]
print(show_magicians(magicians))

Но тогда вы вернете список с теми же значениямикак ваш аргумент.

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

Вы можете попробовать это вместо этого:

def show_magicians(magicians):

    for magician in magicians:
        yield(magician)

magicians = ["a", "b", "c", "d", "e","f", "g"]
for mag in show_magicians(magicians):
    print(mag, end=' ')

Вместо того, чтобы проходить цикл и возвращать первую итерацию, это превратит ваш код в генератор, который вы можете поместить в другой цикл, как показано.Использование yield вместо return вернет каждый элемент в списке, затем перейдет к следующему элементу, затем вернет этот, следующий и т. Д. И т. Д.

На всякий случай, если вы не знаете end = ''в функции печати используется то, что используется для разделения каждого элемента при его возврате.Поиграйте с ним, заменив '' на ',' или '\ n' и т. Д. Для получения других результатов.Вы даже можете добавить результаты в новый список и распечатать, который вместо этого, как показал sarkamedo, опять же, в итоге вы получите копию оригинального списка.

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

Функция print () записывает, т.е. «печатает», строку в консоли.Оператор return приводит к тому, что ваша функция завершает работу и возвращает значение вызывающей стороне.Смысл функций в общем заключается в том, чтобы принимать входные данные и возвращать что-либоОператор return используется, когда функция готова вернуть значение вызывающей стороне.

В первой итерации, когда код достигает возврата, она выходит из функции, поскольку итерация повторяется всего один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...