【发布时间】:2012-09-17 03:24:23
【问题描述】:
我在我正在处理的模块中发现了这段代码:
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,这两个都失败了。
我应该如何阅读这篇文章?
(我怀疑当这被解释时我会感到非常尴尬。)
【问题讨论】:
-
这就是为什么我更喜欢使用
itertools.chain.from_iterable -
那些“可能的重复”中的哪一个解释了语法。
-
感谢您提出这个问题。我已经使用这个成语很长时间了,并且一直想知道“为什么会这样?”
标签: python