How to swap two or more elements in a list in python ?

Published: May 19, 2021

Tags: Python; List;

DMCA.com Protection Status

Examples of how to swap two or more elements in a list in python :

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']

References