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
2 Asked on December 16, 2021 by coderworld
1 Asked on December 16, 2021
1 Asked on December 16, 2021 by mscmdaddcts
3 Asked on December 16, 2021 by jason-livengood
3 Asked on December 16, 2021 by methodical
0 Asked on December 16, 2021 by dentiny
3 Asked on December 16, 2021 by adi-mehrotra
1 Asked on December 16, 2021 by greg-sullivan
1 Asked on December 16, 2021 by desu-sai-venkat
1 Asked on December 16, 2021 by kulweet_kumar
1 Asked on December 16, 2021 by marika
0 Asked on December 16, 2021
3 Asked on December 16, 2021 by swarnabho-biswas-mac
2 Asked on December 16, 2021 by manusekhon983
2 Asked on December 16, 2021 by user13984029
5 Asked on December 16, 2021 by vinicius-miki
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP