Search code examples
pythonfor-looplist-comprehension

Nested For Loops Using List Comprehension


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?


Solution

  • lst = [j + k for j in s1 for k in s2]
    

    or

    lst = [(j, k) for j in s1 for k in s2]
    

    if you want tuples.

    Like in the question, for j... is the outer loop, for k... is the inner loop.

    Essentially, you can have as many independent 'for x in y' clauses as you want in a list comprehension just by sticking one after the other.

    To make it more readable, use multiple lines:

    lst = [
           j + k         # result
           for j in s1   # for loop 
             for k in s2 # for loop
                         # condition   
           ]