擅长:python、mysql、java
<p>看到Python递归比Python迭代运行得更快,我会非常惊讶。试试maxmin的这个实现,一次取两个值。在</p>
<pre><code>def minmax(seq):
def byTwos(seq):
# yield values from sequence two at a time
# if an odd number of values, just return
# the last value twice (won't hurt minmax
# evaluation)
seq = iter(seq)
while 1:
last = next(seq)
yield last,next(seq,last)
seqByTwos = byTwos(seq)
# initialize minval and maxval
a,b = next(seqByTwos,(None,None))
if a < b:
minval,maxval = a,b
else:
minval,maxval = b,a
# now walk the rest of the sequence
for a,b in seqByTwos:
if a < b:
if a < minval:
minval = a
if b > maxval:
maxval = b
else:
if b < minval:
minval = b
if a > maxval:
maxval = a
return minval, maxval
</code></pre>
<p>如果要对比较进行计数,则传递实现<code>__lt__</code>和{<cd2>}的对象序列,并让这些方法更新全局计数器。在</p>