我仍然学习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)
规则是把所有的for和if条款,巢他们出现的顺序,然后append(foo)不管什么foo第一条之前.
了解列表理解的教程部分(以及嵌套列表理解的子部分)解释了这一点......但是它并没有为您提供将任何理解转换为嵌套块语句的简单规则,(在我看来)这使得它更容易理解除了琐碎的案件之外的所有案件.
值得注意的是urllib.parse.parse_qsl(或urlparse.parse_qsl2.x)是解析查询字符串的更好方法.除了它不涉及难以阅读的嵌套列表理解这一事实外,它还可以正确处理您不会事先考虑的各种事情(如引用),并最终调试其中一个不知道如何提交有用的错误报告的用户.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |