Python的insert返回None?
#!/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
是被修改后的列表。