Pop() не возвращает никакого значения внутри функции?

#python #list

#python #Список

Вопрос:

В настоящее время я изучаю pop() функцию в Python и у меня есть вопрос.

 >>> a = [1,2,3,4]
>>> a.pop(3) #or a.pop()
4
>>> print(a)
[1,2,3]
 

Я понимаю, что pop() функция удаляет и возвращает значение элемента, соответствующего индексу. Однако следующий пример является причиной, по которой я в замешательстве:

 >>> a = [1,2,3,4]
>>> def solution(array):
        array.pop()
        return array
>>> solution(a)
[1,2,3]
 

Во-первых, я понимаю, что функция, которую я описал, возвращает [1,2,3] . Однако, почему он не возвращает pop() значение? Разве оно не должно возвращаться 4 , поскольку pop() функция внутри solution() имеет pop() функцию, которая по определению возвращает значение извлеченного элемента?? Я думал, что эта pop() функция действует как del и print функционирует одновременно.

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

1. return и print это совершенно разные вещи. Их легко смешивать в интерактивном режиме, потому что интерактивный режим автоматически печатает много значений, но возврат чего-либо не означает его печать.

2. Я думаю, вы путаете, как работает REPL и как возвращаются значения. pop() ничего не печатает. Это REPL, показывающий последнее выражение evaulation

Ответ №1:

Когда вы вызываете return array после array.pop() того, как он вернет остальную часть элемента, за исключением pop . Потому что вы возвращаете массив не для всех конкретных операций pop. Возвращает array.pop() вместо array

 def solution(array):
    return array.pop()
 

Или другим способом вы можете сохранить элемент pop, а затем вернуть переменную pop.

 def solution(array):
    pop_op=array.pop()
    return pop_op
 

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

1. Я понимаю, что описанная вами функция возвращает всплывающий элемент, но я хочу знать причину, по которой мой не возвращает всплывающий элемент

2. @SihwanLee функция возвращает то, что указывает return оператор. Если вы скажете ему вернуть array , это то, что он вернет.

Ответ №2:

потому что вы не улавливаете, что pop() возвращает, элемент никогда не печатается, только в оболочке python, вы возвращаете измененный массив, а не значение, возвращаемое pop() .

Редактировать: Кстати, вам не нужно возвращать массив, исходный массив уже изменен.