Using Python, I am looking for a solution to the following issue:
[['Orange', 'Banana'], ['Blue', 'Yellow', 'Green'], ['Bike'], ['Ocean', 'Sky']]
The number of Items in each list in the result is 4
The combination has to result in all possible without repeating the members of each group in the same new sublist. All possible combinations should be:
[[Orange, Blue, Bike, Ocean],
[Banana, Blue, Bike, Ocean],
[Orange, Yellow, Bike, Ocean],
[Banana, Yellow, Bike, Ocean],
[Orange, Green, Bike, Ocean],
[Banana, Green, Bike, Ocean],
[Orange, Blue, Bike, Sky],
[Banana, Blue, Bike, Sky],
[Orange, Yellow, Bike, Sky],
[Banana, Yellow, Bike, Sky],
[Orange, Green, Bike, Sky],
[Banana, Green, Bike, Sky]]
I am still trying to figure out how to sort it out. I appreciate any help on this.
IIUC, you're looking for itertools.product
:
import itertools as it
list_of_lists = [['Orange', 'Banana'], ['Blue', 'Yellow', 'Green'], ['Bike'], ['Ocean', 'Sky']]
list(it.product(*list_of_lists))
# => [('Orange', 'Blue', 'Bike', 'Ocean'),
# ('Orange', 'Blue', 'Bike', 'Sky'),
# ('Orange', 'Yellow', 'Bike', 'Ocean'),
# ('Orange', 'Yellow', 'Bike', 'Sky'),
# ('Orange', 'Green', 'Bike', 'Ocean'),
# ('Orange', 'Green', 'Bike', 'Sky'),
# ('Banana', 'Blue', 'Bike', 'Ocean'),
# ('Banana', 'Blue', 'Bike', 'Sky'),
# ('Banana', 'Yellow', 'Bike', 'Ocean'),
# ('Banana', 'Yellow', 'Bike', 'Sky'),
# ('Banana', 'Green', 'Bike', 'Ocean'),
# ('Banana', 'Green', 'Bike', 'Sky')]