# Printing combinations of two lists in Python

Stack Overflow Asked on January 3, 2022

What I’m trying to print is the following, using 2 variables in each string for simplicity. I think something’s wrong using the loops, i’m kinda new to Python. Thanks in advance!

com0 <-(a) with (1,)
com1 <-(a) with (2,)
com2 <-(a) with (1, 2)
com3 <-(b) with (1,)
com4 <-(b) with (2,)
com5 <-(b) with (1, 2)
com6 <-(a,b) with (1,)
com7 <-(a,b) with (2,)
com8 <-(a,b) with (1, 2)


This is what I’ve tried:

import itertools

i = 0 #v1
j = 0 #v2

v1 = [1, 2]
v2 = ["a","b"]

while j < 2**len(v2):

for K in range(0, len(v2)+1):

while i < 2**len(v1):

for L in range(0, len(v1)+1):

for subset2 in itertools.combinations(v1, L):

for subset1 in itertools.combinations(v2, K):

print("com{0} <-{1} with {2}".format(i,subset1,subset2))

i+=1
j+=1


You dont need these many loops for this. Just use combinations and product from itertoools

>>> from itertools import combinations, product
>>>
>>> v1 = [1, 2]
>>> v2 = ["a","b"]
>>>
>>> all_v1 = [e for i in range(len(v1)) for e in combinations(v1,i+1)]
>>> all_v2 = [e for i in range(len(v1)) for e in combinations(v2,i+1)]
>>>
>>> for i, (x,y) in enumerate(product(all_v2, all_v1)):
...     print (f'com{i} <-{x} with {y}')
...
com0 <-('a',) with (1,)
com1 <-('a',) with (2,)
com2 <-('a',) with (1, 2)
com3 <-('b',) with (1,)
com4 <-('b',) with (2,)
com5 <-('b',) with (1, 2)
com6 <-('a', 'b') with (1,)
com7 <-('a', 'b') with (2,)
com8 <-('a', 'b') with (1, 2)


Answered by Prem Anand on January 3, 2022

The product() from itertools results in the Cartesian product of the two lists. By using this function you avoid all the loops:

import itertools

v1 = [1, 2]
v2 = ["a","b"]
combinations = list(itertools.product(v1, v2))
>> [(1, "a"), (1, "b"), (2, "a"), (2, "b")]


Answered by Bram Dekker on January 3, 2022

## Related Questions

### What would be the best way to compute OOZIE timestamp difference?

2  Asked on December 16, 2021 by coderworld

### The .json printed data doesn’t respect the dictionary order in Python

1  Asked on December 16, 2021

### How do I find a duplicate in SQL

3  Asked on December 16, 2021 by jason-livengood

### Swift – Negative string to integer conversion not being parsed correctly

3  Asked on December 16, 2021 by methodical

### C++ nested class inside of a templated class

0  Asked on December 16, 2021 by dentiny

### Can you create a data frame of a dictionary?

1  Asked on December 16, 2021 by greg-sullivan

### Finding index in nested list

2  Asked on December 16, 2021

### How to render json data with @ character in its key using handlebars?

1  Asked on December 16, 2021 by desu-sai-venkat

### how to implement restapi in laravel and its working

1  Asked on December 16, 2021 by kulweet_kumar

### How to find the biggest VALUE (not a key) in a HashMap?

1  Asked on December 16, 2021 by marika

### Brief explanation for WM_LBUTTONDOWN windows message and DragDetect

0  Asked on December 16, 2021

### Get value of editable tag through oninput function?

3  Asked on December 16, 2021 by swarnabho-biswas-mac

### Trying to make a magic eight ball and if the user does not enter a question it should say please ask a question but it does not work

2  Asked on December 16, 2021 by manusekhon983

### Replace patterns separated by delimiter in R

3  Asked on December 16, 2021

### How can i sort a function?

2  Asked on December 16, 2021 by lumknight

### How to normalize my array between 0 and 1 by column and by line

2  Asked on December 16, 2021 by user13984029

### ‘MyList’ object does not support item assignment

5  Asked on December 16, 2021 by vinicius-miki

### How can I move a item in a numpy array?

1  Asked on December 16, 2021 by lostsoul