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

Get help from others!

Recent Questions

- How can I transform graph image into a tikzpicture LaTeX code?
- How Do I Get The Ifruit App Off Of Gta 5 / Grand Theft Auto 5
- Iv’e designed a space elevator using a series of lasers. do you know anybody i could submit the designs too that could manufacture the concept and put it to use
- Need help finding a book. Female OP protagonist, magic
- Why is the WWF pending games (“Your turn”) area replaced w/ a column of “Bonus & Reward”gift boxes?

Recent Answers

- Peter Machado on Why fry rice before boiling?
- Lex on Does Google Analytics track 404 page responses as valid page views?
- Joshua Engel on Why fry rice before boiling?
- Jon Church on Why fry rice before boiling?
- haakon.io on Why fry rice before boiling?

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