You can use a list comprehension to replace items in a Python list:
my_list = ['item 1', 'item 2', 'item 3',...] my_list = ['new item' if i=='old item' else i for i in my_list]
To better understand how to replace items in a Python list, you’ll see the following 3 scenarios about:
- Replacing an item with another item
- Replacing multiple items with another item
- Replacing multiple items with multiple items
The Example
To start with a simple example, let’s create the following list of fruits.
my_list = ['Banana','Banana','Apple','Mango','Banana','Mango','Mango','Apple'] print(my_list)
This is how the list would look like:
['Banana', 'Banana', 'Apple', 'Mango', 'Banana', 'Mango', 'Mango', 'Apple']
(1) Replace an item with another item
Suppose that you want to replace Banana with Pear.
You can then use a list comprehension to perform the replacement:
my_list = ['Banana','Banana','Apple','Mango','Banana','Mango','Mango','Apple'] my_list = ['Pear' if i=='Banana' else i for i in my_list] print(my_list)
You’ll now see that Banana was replaced with Pear in 3 locations:
['Pear', 'Pear', 'Apple', 'Mango', 'Pear', 'Mango', 'Mango', 'Apple']
(2) Replace multiple items with another item
What if you want to replace multiple items with another item?
For example, let’s say that you want to replace Banana and Apple with Pear.
In that case, you can use the following syntax to perform the replacement:
my_list = ['Banana','Banana','Apple','Mango','Banana','Mango','Mango','Apple'] my_list = ['Pear' if i in ['Banana','Apple'] else i for i in my_list] print(my_list)
As you can see, both Banana and Apple got replaced with Pear in 5 locations:
['Pear', 'Pear', 'Pear', 'Mango', 'Pear', 'Mango', 'Mango', 'Pear']
Alternatively, you can achieve the same results with the help of pipe (“|”):
my_list = ['Banana','Banana','Apple','Mango','Banana','Mango','Mango','Apple'] my_list = ['Pear' if (i=='Banana') | (i=='Apple') else i for i in my_list] print(my_list)
You’ll get the same results:
['Pear', 'Pear', 'Pear', 'Mango', 'Pear', 'Mango', 'Mango', 'Pear']
(3) Replace multiple items with multiple items
For this scenario, the goal is to:
- Replace Banana with Pear
- Replace Apple with Watermelon
Here is the syntax that you can use:
my_list = ['Banana','Banana','Apple','Mango','Banana','Mango','Mango','Apple'] my_list = ['Pear' if i=='Banana' else 'Watermelon' if i=='Apple' else i for i in my_list] print(my_list)
You’ll now see that Banana was replaced with Pear (as highlighted in yellow), while Apple was replaced with Watermelon (as highlighted in green):
['Pear', 'Pear', 'Watermelon', 'Mango', 'Pear', 'Mango', 'Mango', 'Watermelon']
Working with Numeric Data
So far, you have seen how to work with texts/strings in your lists.
But what your list contains numeric data?
For instance, let’s create the following list that contains numeric data (i.e., integers):
my_list = [22,33,77,22,33] print(my_list)
Here is the new list:
[22, 33, 77, 22, 33]
Suppose that you want to replace the value of 22 with 99.
You can then use the syntax below to perform the replacement (note that unlike the previous scenarios, it’s not necessary to use quotes around numeric values):
my_list = [22,33,77,22,33] my_list = [99 if i==22 else i for i in my_list] print(my_list)
As you can see, the numeric value of 22 was replaced with 99 in 2 locations:
[99, 33, 77, 99, 33]