Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python's insert returning None?

Tags:

python

list

#!/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]

I am getting "None". What am I doing wrong?

like image 662
user62617 Avatar asked Oct 04 '09 17:10

user62617


People also ask

What does insert return in Python?

Return Value of insert() function in Python insert() method just inserts the element in the list and updates the list and so does not return any value or we can say that insert() method returns None.

Why is my append returning None?

append() is an in-place operation, meaning that it modifies the state of the list , instead of returning a new list object. All functions in Python return None unless they explicitly return something else.

What is the time complexity of insert in Python?

insert always has O(n) (linear) complexity. Also, a Python list is not exactly the same as a C++ list. In fact, a Python list is more comparable to a C++ std::vector if anything.


2 Answers

Mutating-methods on lists tend to return None, not the modified list as you expect -- such metods perform their effect by altering the list in-place, not by building and returning a new one. So, print numbers instead of print clean will show you the altered list.

If you need to keep numbers intact, first you make a copy, then you alter the copy:

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

this has the overall effect you appear to desire: numbers is unchanged, clean is the changed list.

like image 67
Alex Martelli Avatar answered Sep 20 '22 06:09

Alex Martelli


The insert method modifies the list in place and does not return a new reference. Try:

>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> print numbers
[1, 2, 3, 'four', 5, 6, 7]
like image 34
Ned Deily Avatar answered Sep 20 '22 06:09

Ned Deily