VOOZH about

URL: https://www.geeksforgeeks.org/python/python-all-pair-combinations-of-2-tuples/

⇱ Python - All pair combinations of 2 tuples - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Python - All pair combinations of 2 tuples

Last Updated : 4 Nov, 2025

When working with Python tuples, you might need to generate all possible pair combinations between two tuples. This operation is useful in areas such as data science, simulation, and game development.

Example:

Input : t1 = (7, 2), t2 = (7, 8) 
Output : [(7, 7), (7, 8), (2, 7), (2, 8), (7, 7), (7, 2), (8, 7), (8, 2)] 

Let's discuss certain ways in which this task can be performed.

Using itertools.chain() + product()

The combination of itertools.product() and itertools.chain() is the most concise and efficient approach to generate all pair combinations.

  • product(): creates Cartesian products between tuples.
  • chain(): merges the two product results into a single iterable.

Output
[(4, 7), (4, 8), (5, 7), (5, 8), (7, 4), (7, 5), (8, 4), (8, 5)]

Explanation:

  • product(t1, t2): creates all forward pair combinations.
  • product(t2, t1): creates all reverse pair combinations.
  • chain(product(...), product(...)): combines both forward and reverse combinations into a single iterable.
  • list(chain(...)): converts that combined iterable into a list, storing all pair combinations in res.

Using List Comprehension

List comprehension provides a concise and readable way to perform the same task. It iterates over all elements of both tuples, combining them into pairs.


Output
[(4, 7), (4, 8), (5, 7), (5, 8), (7, 4), (7, 5), (8, 4), (8, 5)]

Explanation:

  • [(a, b) for a in t1 for b in t2]: generates all forward pairs (elements from the first tuple combined with the second).
  • [(a, b) for a in t2 for b in t1]: generates all reverse pairs (elements from the second tuple combined with the first).

Using itertools.product() 

This method manually uses nested list comprehensions to generate all combinations.


Output
[(4, 7), (4, 8), (5, 7), (5, 8), (7, 4), (7, 5), (8, 4), (8, 5)]

Explanation:

  • [(a, b) for a in t1 for b in t2]: generates all forward pair combinations.
  • [(a, b) for a in t2 for b in t1]: generates all reverse pair combinations.

Using Nested Loops

This approach uses simple for loops to create all possible forward and reverse pair combinations.


Output
[(4, 7), (7, 4), (4, 8), (8, 4), (5, 7), (7, 5), (5, 8), (8, 5)]

Explanation:

  • res.append((ele1, ele2)): Adds forward pair.
  • res.append((ele2, ele1)): Adds reverse pair.

Related Articles:

Comment