擅长:python、mysql、java
<blockquote>
<p>I have been told that list comprehension is advantageous over nested for loops.</p>
</blockquote>
<p>和任何与风格相关的东西一样,这在某种程度上是一个偏好的问题。对于代码来说,可读性是一个显著的好处</p>
<pre><code>foo = []
for thing in things:
foo.append(thing + 5)
</code></pre>
<p>我认为上面的内容不如</p>
<pre><code>foo = [thing + 5 for thing in things]
</code></pre>
<p>所以在这种情况下,我倾向于理解。然而,作为你的例子,理解</p>
<pre><code>results = {p: {t:tableText[n+1] if field in t} for field in wantedfields for t in [td.text.strip() for td in pesticideSoup[p].find_all("td", recursive=True)] for p in rand_links.keys()}
</code></pre>
<p>在我看来,这是一个令人毛骨悚然的混乱局面。你想让别人写代码让你读吗?在多行上使用循环的“解包”版本可能更具可读性,因此尽管它占用了更多的代码行,但这将是我的首选</p>
<p>代码中的“更好”和“更差”是主观的——这取决于你想要什么。对于python非常适合的任务,代码可读性通常比以某种方式“优化”代码所获得的任何优势更有用</p>