list.pop方法返回None而非预期值
我刚刚在试用这个方法 .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上的示例。