As an alternative solution you can use itertools.product
like below:
>>> import itertools
>>> list1 = ["red", "green", "blue", "yellow"]
>>> list2 = ["car", "tree", "house", "guitar"]
>>> list(itertools.product(*[list1 , list2]))
[('red', 'car'),
('red', 'tree'),
('red', 'house'),
('red', 'guitar'),
('green', 'car'),
('green', 'tree'),
('green', 'house'),
('green', 'guitar'),
('blue', 'car'),
('blue', 'tree'),
('blue', 'house'),
('blue', 'guitar'),
('yellow', 'car'),
('yellow', 'tree'),
('yellow', 'house'),
('yellow', 'guitar')]
>>> list(map(' '.join , (itertools.product(*[list1 , list2]))))
['red car',
'red tree',
'red house',
'red guitar',
'green car',
'green tree',
'green house',
'green guitar',
'blue car',
'blue tree',
'blue house',
'blue guitar',
'yellow car',
'yellow tree',
'yellow house',
'yellow guitar']
You can use this solution for more than two lists:
>>> list1 = ["red", "green"]
>>> list2 = ["car", "tree"]
>>> list3 = ["here", "there"]
>>> list(map(' '.join , (itertools.product(*[list1 , list2, list3]))))
['red car here',
'red car there',
'red tree here',
'red tree there',
'green car here',
'green car there',
'green tree here',
'green tree there']