使用列表理解嵌套循环

Joh*_*ard 75 python for-loop list-comprehension

如果我有两个字符串,'abc'并且'def',我可以使用两个for循环获得它们的所有组合:

for j in s1:
  for k in s2:
    print(j, k)
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够使用列表理解来做到这一点.我尝试了很多方法,但从未设法得到它.有谁知道如何做到这一点?

aar*_*ing 122

lst = [j + k for j in s1 for k in s2]
Run Code Online (Sandbox Code Playgroud)

要么

lst = [(j, k) for j in s1 for k in s2]
Run Code Online (Sandbox Code Playgroud)

如果你想要元组.

就像在问题中一样,for j...外循环for k...是内循环.

从本质上讲,你可以在列表理解中拥有尽可能多的独立'for x in y'子句,只需一个接一个地粘贴.

  • 如果您想要执行嵌套循环来迭代嵌套列表怎么办?类似于: [print('a') for ax in axs for axs inaxs] 正在 [None, None...] 上打印一堆,直到 len(axes) (3认同)

mil*_*s82 31

由于这实际上是笛卡儿积,因此您也可以使用itertools.product.我认为它更清楚,特别是当你有更多的输入迭代时.

itertools.product('abc', 'def', 'ghi')
Run Code Online (Sandbox Code Playgroud)