我在我正在处理的模块中发现了这段代码:
l = opaque_function()
thingys = [x for y in l for x in y]
我看不懂这个。通过实验,我能够确定它正在展平一个 2 级嵌套列表,但语法对我来说仍然是不透明的。它显然省略了一些可选的括号。
>>> l = [[1,2],[3,4]]
>>> [x for y in l for x in y]
[1, 2, 3, 4]
我的眼睛想将其解析为:[x for y in [l for x in y] ]
或[ [x for y in l] for x in y ]
,但由于y
未定义,这两个都失败了。
我应该怎么读这个?
(我怀疑当这被解释时我会感到非常尴尬。)