Python 为什么当我们为列表列表中的每个列表列出列表的所有元素时,我们需要在for-in子句中有一个特定的顺序?

Python 为什么当我们为列表列表中的每个列表列出列表的所有元素时,我们需要在for-in子句中有一个特定的顺序?,python,list,syntax,Python,List,Syntax,我说的是条款中for的顺序 该命令的作用是: [元素列表中元素列表的元素列表的打印元素] 但这并不是: [printelement for element in element_list for element_list in element_list in list of_list] 我个人觉得第二个更具可读性。原因很简单。我想我们同意列表是有序的集合,所以没有问题。为什么要下订单?如果你这样想,很容易记住: 用于subl中elt的列表中的subl的elt 与 对于列表中的subl: 对于su

我说的是条款中for的顺序

该命令的作用是:

[元素列表中元素列表的元素列表的打印元素]

但这并不是:

[printelement for element in element_list for element_list in element_list in list of_list]


我个人觉得第二个更具可读性。

原因很简单。我想我们同意列表是有序的集合,所以没有问题。为什么要下订单?如果你这样想,很容易记住:

用于subl中elt的列表中的subl的elt

对于列表中的subl: 对于subl中的elt: 屈服强度 所以,要将后一个更改为前一个,只需通过删除冒号来展开嵌套for循环,已经右缩进的块然后向右滑动,屈服表达式放在前面

如果一开始就很难理解,我建议你先写循环部分,省略冒号和换行符,最后把返回的部分放在那里。就是

一,

二,

[对于elt in subl的列表中的subl],注意滑动到右端

三,


[elt针对subl中的elt列表中的subl]已完成

你为什么不需要具体的订单?如果其中任何一个起作用,就会产生歧义。请参见,例如,以获得直观的解释。是的,顺序在列表理解中很重要。它与循环的等效顺序相同,因此在这方面是一致的。此外,您不应该在这里使用列表理解。列表理解并不像打印那样有副作用。它们用于创建列表。编译器可以使用不同的列表理解顺序和for循环顺序吗?列表理解顺序与for循环顺序不同有意义吗?我发现错误的方法更具可读性。可以理解,一开始我也很难理解。错误的顺序感觉更自然,但这取决于你如何看待它;在意识到我解释的规则后,我发现这完全没问题。此外,如果在vim中将循环重构为一行程序,或者反之亦然,那么使用当前语法的工作量就会减少;
for subl in lists
    for elt in subl