擅长:python、mysql、java
<p>正如文森特提到的,由于第五行,您的函数没有返回任何值。将其更改为:</p>
<pre><code>def combinationOfK(K,L):
result = []
if K <= 0:
result.append([])
return result
for i in range(len(L)):
thisone = L[i:i+1]
for another in combinationOfK(K-1, L[i+1:]): # the error
result.append(thisone + another)
return result
</code></pre>
<p>但是,你为什么反对收益?生成器可以生成可读、高效的代码。Yield关键字Explained这篇文章的重点并不是要放弃它,而是要解释它。在</p>
<p>在您发布的生成器代码中:</p>
^{pr2}$
<p><code>return</code>语句与<code>return</code>在普通函数中的含义不同。在生成器中,<code>return</code>立即引发StopIteration,这将导致调用者停止对生成器对象的迭代。在</p>