14
votes

I want to add a string to a list:

list1 = ['hi','how','are','you','googl']
ok = 'item22'
list1 = list1.extend(ok)

but it prints None. Why is that?

2
is list1.extend(ok) ..... not list1 = list1.extend(ok) - Jose Ricardo Bustos M.
you may write better list1.append(ok) - Jose Ricardo Bustos M.
thank you for the answer - Bob Ebert
The fun thing is that list1.extend(ok) actually does work, but it doesn't do what you want… try it and see. - abarnert
list.extend(object) is a 'void' function. That is, it does not return any value. First store the list into a variable. Call extend on the variable, then pass the variable. - AndreGraveler

2 Answers

23
votes

The function extend is an in-place function i.e. It will make the changes to the original list itself. From the docs

Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.

Hence you do not need to re-assign it back to the list variable.

You can do

list1 = ['hi','how','are','you','googl']
ok = 'item22'
list1.extend([ok])   # Notice brackets here

Then when you print list it will print

['hi','how','are','you','googl','item22']

Better way

Using append as mentioned below is the better way to do it.

list1 = ['hi','how','are','you','googl']
ok = 'item22'
list1.append(ok)   # Notice No brackets here
3
votes

There is another way, using module numpy will do the work https://pypi.org/project/numpy/

Specific in your example it will be look like this:

import numpy as np 
list1 = ['hi','how','are','you','googl']
ok = 'item22'

list1 = list(np.append(list1, [ok]))
print(list)