Examples of how to swap two or more elements in a list in python :
Table of contents
Create a list
Let's first create a list in python:
l = ['a','e','c','d','b','f']
Swap two elements in a list
To swap for example the letters 'e' and 'b', a solution is to first get their indices:
idx1 = l.index('e')
idx2 = l.index('b')
returns here 1 and 4 here (Note: index() returns the first index in case of duplicates!).
And then use a tuple:
l[idx1], l[idx2] = l[idx2], l[idx1]
print(l)
returns
['a', 'b', 'c', 'd', 'e', 'f']
Another solution but less efficient is to do:
l = ['a','e','c','d','b','f']
tmp = l[1]
l[1] = l[4]
l[4] = tmp
print(l)
also returns
['a', 'b', 'c', 'd', 'e', 'f']
A thrid solution is to do
l = ['a','e','c','d','b','f']
idx1 = 1
idx2 = 4
e1 = l.pop(idx1)
e2 = l.pop(idx2-1) # -1 since we previously pop 'e'
print(e1,e2)
l.insert(idx1,e2)
l.insert(idx2,e1)
print(l)
also returns
['a', 'b', 'c', 'd', 'e', 'f']
Note that for the above example another solution in python is to do
l.sort()
returns
['a', 'b', 'c', 'd', 'e', 'f']
Swap multiple elements in a list
For example let's consider the following list:
l = ['c','e','a','d','b','f']
The goal is to swap ('b','d') and ('a','c')
Using what we learned previously, a solution is to do:
for i,j in [(1,4),(0,2)]:
l[i], l[j] = l[j], l[i]
print(l)
gives
`['a', 'b', 'c', 'd', 'e', 'f']