Nested For Loops Using List Comprehension

Viewed 87555

If I had two strings, 'abc' and 'def', I could get all combinations of them using two for loops:

for j in s1:
  for k in s2:
    print(j, k)

However, I would like to be able to do this using list comprehension. I've tried many ways, but have never managed to get it. Does anyone know how to do this?

4 Answers

It's just a ready-to-go version of @miles82 answer (please give credit where it's due):

from itertools import product
list(map(list, product('abc', 'def') ))

Output:

[['a', 'd'],
 ['a', 'e'],
 ['a', 'f'],
 ['b', 'd'],
 ['b', 'e'],
 ['b', 'f'],
 ['c', 'd'],
 ['c', 'e'],
 ['c', 'f']]

In case you wondered why we need list(map(list - itertools.product returns an iterator.

Related