Python的insert返回None?

12 投票
4 回答
12904 浏览
提问于 2025-04-15 14:47
#!/usr/bin/python

numbers = [1, 2, 3, 5, 6, 7]

clean = numbers.insert(3, 'four')

print clean
# desire results [1, 2, 3, 'four', 5, 6, 7]

我得到了“None”。我哪里做错了呢?

4 个回答

3

list.insert()这个操作其实不返回任何东西,可能你想要的是:

print numbers
12

insert方法会直接在原来的列表上进行修改,而不会返回一个新的列表。你可以试试:

>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> print numbers
[1, 2, 3, 'four', 5, 6, 7]
21

对列表进行修改的方法通常会返回 None,而不是你期待的修改后的列表——这些方法是直接在原列表上进行修改,而不是创建一个新的列表并返回。所以,你应该用 print numbers 来查看被修改后的列表,而不是 print clean

如果你想保持 numbers 不变,首先要复制一份,然后再修改这份复制的列表:

clean = list(numbers)
clean.insert(3, 'four')

这样做的效果正是你想要的:numbers 保持不变,而 clean 是被修改后的列表。

撰写回答