I’m having trouble wrapping my head around a algorithm I’m try to implement. I have two lists and want to take particular combinations from the two lists.
Here’s an example.
names = ['a', 'b']
numbers = [1, 2]
the output in this case would be:
[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
I might have more names than numbers, i.e. len(names) >= len(numbers). Here’s an example with 3 names and 2 numbers:
names = ['a', 'b', 'c']
numbers = [1, 2]
output:
[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
[('a', 1), ('c', 2)]
[('c', 1), ('a', 2)]
[('b', 1), ('c', 2)]
[('c', 1), ('b', 2)]
Note: This answer is for the specific question asked above. If you are here from Google and just looking for a way to get a Cartesian product in Python,
itertools.productor a simple list comprehension may be what you are looking for – see the other answers.Suppose
len(list1) >= len(list2). Then what you appear to want is to take all permutations of lengthlen(list2)fromlist1and match them with items from list2. In python:Returns