All Possible Pairs in List Python (original) (raw)

Last Updated : 15 Jul, 2025

We are given a list and our task is to generate all possible pairs from the list. Each pair consists of two distinct elements from the list. **For example: a = [1, 2, 3] then the output will be [(1,2), (1,3), (2,3)].

combinations() function from the itertools module generates all possible pairs without repetition efficiently.

Python `

from itertools import combinations

a = [1, 2, 3] res = list(combinations(a, 2))

print(res)

`

Output

[(1, 2), (1, 3), (2, 3)]

**Explanation:

Table of Content

Using List Comprehension

List comprehension provides a more concise way to generate all possible pairs.

Python `

a = [1, 2, 3] res = [(a[i], a[j]) for i in range(len(a)) for j in range(i + 1, len(a))]

print(res)

`

Output

[(1, 2), (1, 3), (2, 3)]

**Explanation: This is a compact version of the nested loop method, the outer loop selects a[i] and the inner loop selects a[j], ensuring i < j.

Using Nested Loops

A simple way to generate all possible pairs is by using two nested loops.

Python `

a = [1, 2, 3] res = []

for i in range(len(a)): for j in range(i + 1, len(a)): res.append((a[i], a[j]))

print(res)

`

Output

[(1, 2), (1, 3), (2, 3)]

**Explanation: The outer loop picks an element a[i] and the inner loop picks elements a[j] (where j > i) to ensure unique pairs.

Using zip() with Slicing

We can use zip() along with slicing to generate pairs although this method is not recommended for general cases.

Python `

a = [1, 2, 3] res = [(x, y) for i, x in enumerate(a) for y in a[i + 1:]]

print(res)

`

Output

[(1, 2), (1, 3), (2, 3)]

**Explanation: