Почему «return» возвращает «None» вместо требуемого «Списка»?

#python #python-3.x #list

#python #python-3.x #Список

Вопрос:

Я пишу код, который возвращает элементы odd positions в этом списке. Когда я запускаю свою программу, она не показывает никаких выходных данных. Но когда я заменяю return lst2 на return print(lst2) , он показывает мне требуемый результат. Итак, мой вопрос в том, почему моя программа не показывает никаких выходных данных, когда я пишу return lst2 ?

 def op(lst):
    lst2=[]

    for i in lst:
        indx=lst.index(i)

        if indx%2==1:
            lst2.append(i)

    return lst2

a=[22, 5, 7, 35, 1, 100, 15]
op(a)
 

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

1. В этом коде нет никаких print() операторов. Почему вы ожидаете, что что-то будет напечатано? «return» не означает «также печатать».

2. Спасибо за разъяснение. @JohnGordon

Ответ №1:

Вы просто возвращаете список, а не печатаете его.

 def op(lst):
    lst2 = []

    for i in lst:
        indx = lst.index(i)

        if indx % 2 == 1:
            lst2.append(i)

    return lst2


a = [22, 5, 7, 35, 1, 100, 15]
print(op(a))
 

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

1. «return» возвращает значение, так почему же он не возвращает список?

2. На самом деле он возвращает список, вы просто ничего не делаете с возвращаемым значением.: print(type(op(a)))

3. @Aetooc Правильно. return возвращает объект в код, который вызвал функцию. Он ничего не выводит на экран.

4. Спасибо за разъяснение. @Leemosh

5. Спасибо за разъяснение. @PaulM.

Ответ №2:

Поскольку вы не печатаете список, вы просто возвращаете его (сам объект списка). Это op(a) уместно, если вы хотите что-то сделать со списком, но если вы просто хотите распечатать его содержимое, вам следует вызвать print(op(a)) или изменить функцию op для печати содержимого списка вместо его возврата.