list.pop方法返回None而非预期值

-2 投票
2 回答
4390 浏览
提问于 2025-04-18 13:28

我刚刚在试用这个方法 .pop(),文档上说它的作用是“移除列表中指定位置的项目,并返回它”。

于是我尝试了以下代码:

def lao(li, i):
    guess=input('Have a guess: ')
    if guess == li[i]:
        li.pop(i)

ho=list('abcde')

我想看看 lao(ho, 0) 是否像我想的那样返回并移除了 'a',结果是这样的:

>>> print(lao(ho, 0))
Have a guess: a
None

>>> ho
['b', 'c', 'd', 'e']

很明显,.pop() 方法确实执行了,因为 'a' 被移除了,但这个方法没有返回 'a',而是返回了 None。我不明白为什么?

2 个回答

0

你可以试试用 return li.pop(i) 这个方法。

这个方法可能是正常工作的,只是你没有返回一个实际的值。

3

li.pop(i) 改成 return li.pop(i)。在Python中,如果一个函数没有写 return 这个关键词,它默认会返回 None。如果你想从函数里返回一些东西,就必须使用 return 这个关键词。你可以查看这个 在Ideone上的示例

撰写回答