这个python"for"复合语句如何工作?

Byt*_*eMe 1 python

在leetcode上看到了以下解决方案:

class Solution:
    def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """

        if root is None:
            return []

        q, res = [root], []
        q1 = []
        while q:
            res.append([node.val for node in q])
            q = [child for node in q for child in node.children]

        return res
Run Code Online (Sandbox Code Playgroud)

[child for node in q for child in node.children]工作怎么样?当你把它放在for循环语句之前时,孩子的意思是什么?

Pri*_*usa 8

这是一个嵌套的列表理解.

q = [child for node in q for child in node.children]
Run Code Online (Sandbox Code Playgroud)

相当于:

tmp = []
for node in q:
    for child in node.children:
        tmp.append(child)
q = tmp
Run Code Online (Sandbox Code Playgroud)