擅长:python、mysql、java
<p>启动<code>Python 3.8</code>,并引入<a href="https://www.python.org/dev/peps/pep-0572/" rel="nofollow noreferrer">assignment expressions (PEP 572)</a>(<code>:=</code>运算符),可以在列表理解中使用局部变量,以避免调用同一表达式的两次:</p>
<p>在我们的例子中,如果<code>parts[1]</code>不等于<code>5</code>,我们可以将<code>line.split(';')</code>的求值命名为变量<code>parts</code>,同时使用表达式的结果过滤列表,从而重用<code>parts</code>来生成映射值:</p>
<pre><code># text = '1;2;4\n3;4;5'
[(parts[1], parts[2]) for line in text.split('\n') if (parts := line.split(';'))[1] != 5]
# [('2', '4'), ('4', '5')]
</code></pre>