擅长:python、mysql、java
<p>另外,我建议使用<a href="https://docs.python.org/2/library/itertools.html#itertools.izip_longest" rel="nofollow">^{<cd1>}</a>(在python 3中是<code>zip_longest</code>)来创建一个包含连续对的生成器:</p>
<p>可以使用<code>tee</code>从第一个iterable创建2个独立的迭代器。在</p>
<pre><code>from itertools import izip_longest,tee
def checkSorted(it):
pre,it=tee(it)
next(it)
for i,j in izip_longest(pre,it):
if j:
if i >= j:
yield i
else:
raise ValueError("Iterator is not sorted")
else :
yield i
</code></pre>
<p>演示:</p>
^{pr2}$
<p>注:事实上,我认为你没有必要放弃你所拥有的价值已经。所以作为一种更优雅的方式,我建议在<code>all</code>函数中使用生成器表达式并返回bool值:</p>
<pre><code>from itertools import izip,tee
def checkSorted(it):
pre,it=tee(it)
next(it)
return all(i>=j for i,j in izip(pre,it))
</code></pre>