我知道在Python3中,在嵌套的列表推导式中正确使用多个
但是我的自然语言直觉非常反感。 我本来(错误地)期望代码应该是:
for
的方法如下:lista = [[[1,2],[3],[4,5,6]],[[7],[8,9]]]
flatlista = [i for k in lista for j in k for i in j]
# results with [1, 2, 3, 4, 5, 6, 7, 8, 9]
但是我的自然语言直觉非常反感。 我本来(错误地)期望代码应该是:
flatlista = [i for i in j for j in k for k in lista]
错误的版本听起来几乎像英语,并且从左到右以一个流读取。正确的版本需要一些嵌套阅读技巧,跳过左右以包含意义。
为什么语法是这样的?为什么语言是这样构建的?
i
之外)永远不需要向右看以查看可用的内容。你写for k in lista
,你知道你有可用的k
,所以你接下来执行for j in k
,并知道你有可用的j
等等。在你的版本中,你实际上必须从右到左阅读,从外部到内部。 - poke