<p>通过阅读Peter Norvig的<a href="http://norvig.com/sudoku.html" rel="noreferrer">Solving Every Sudoku Puzzle essay</a>,我遇到了一些以前从未见过的Python习惯用法。</p>
<p>我知道一个函数可以返回一个元组/值列表,在这种情况下,可以为结果分配多个变量,例如</p>
<pre class="lang-py prettyprint-override"><code>def f():
return 1,2
a, b = f()
</code></pre>
<p>但以下每一项的含义是什么?</p>
<pre><code>d2, = values[s] ## values[s] is a string and at this point len(values[s]) is 1
</code></pre>
<p>如果<code>len(values[s]) == 1</code>,那么这个语句与<code>d2 = values[s]</code>有何不同?</p>
<p>关于在作业中使用下划线的另一个问题是:</p>
<pre><code>_,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)
</code></pre>
<p>下划线是否基本上会丢弃列表中返回的第一个值?</p>