AnswerBun.com

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

2 Answers

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

Add your own answers!

Related Questions

Range input controls two different fields

1  Asked on December 16, 2021 by mscmdaddcts

   

How do I find a duplicate in SQL

3  Asked on December 16, 2021 by jason-livengood

     

C++ nested class inside of a templated class

0  Asked on December 16, 2021 by dentiny

     

how to interpret “shift/reduce” conflicts in bison

3  Asked on December 16, 2021 by adi-mehrotra

   

Can you create a data frame of a dictionary?

1  Asked on December 16, 2021 by greg-sullivan

     

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

       

Get value of editable tag through oninput function?

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

 

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

       

‘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

   

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP