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

时间:2013-04-01 21:42:53

标签: python python-2.7

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

 pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]

1 个答案:

答案 0 :(得分:11)

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

pairs = []
for s1 in qs.split('&'):
    for s2 in s1.split(';'):
        pairs.append(s2)

规则是采用所有forif子句,按照它们出现的顺序嵌套它们,然后append(foo)用于foo之前的任何内容子句。

关于List Comprehension的教程部分(以及嵌套列表理解的子部分)解释了这一点......但它没有给出将任何理解转换为嵌套块语句的简单规则,(在我看来)除了微不足道的案例之外,所有人都能更容易理解。

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