请解释一下这个python代码的含义是什么?

Yan*_*Gao 5 python python-2.7

我仍然学习python,但这段代码似乎超出了我的水平.这是什么意思?

 pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
Run Code Online (Sandbox Code Playgroud)

aba*_*ert 11

您可以将任何列表推导转换为等效的显式循环,如下所示:

pairs = []
for s1 in qs.split('&'):
    for s2 in s1.split(';'):
        pairs.append(s2)
Run Code Online (Sandbox Code Playgroud)

规则是把所有的forif条款,巢他们出现的顺序,然后append(foo)不管什么foo第一条之前.

了解列表理解的教程部分(以及嵌套列表理解的子部分)解释了这一点......但是它并没有为您提供将任何理解转换为嵌套块语句的简单规则,(在我看来)这使得它更容易理解除了琐碎的案件之外的所有案件.

值得注意的是urllib.parse.parse_qsl(或urlparse.parse_qsl2.x)是解析查询字符串的更好方法.除了它不涉及难以阅读的嵌套列表理解这一事实外,它还可以正确处理您不会事先考虑的各种事情(如引用),并最终调试其中一个不知道如何提交有用的错误报告的用户.

  • 嵌套点+1.对于一个令人尴尬的长时间,我的大脑总是试图向后读取嵌套的listcomps,因为我知道附加的等效部分是"最深的"部分,并且首先出现,所以我认为你从最深处"向上"写了它.然后有一天,所以有人说"你按照你写环的完全相同的顺序编写列表推导的循环部分,这有多难?" 并给出了你刚才做的例子.从那以后,一切都很清楚.. (3认同)