擅长:python、mysql、java
<p>使用<a href="http://www.youtube.com/watch?v=t85uBptTDYY&list=UUAuqj5Bs5mTTl1mIVDmuAlw&index=1&feature=plcp" rel="noreferrer">a generator expression</a>和<a href="http://docs.python.org/release/3.1.5/library/functions.html#all" rel="noreferrer">the ^{<cd1>} builtin</a>可以轻松完成此操作:</p>
<pre><code>all(earlier >= later for earlier, later in zip(seq, seq[1:]))
</code></pre>
<p>例如:</p>
<pre><code>>>> seq = [9, 8, 5, 1, 4, 3, 2]
>>> all(earlier >= later for earlier, later in zip(seq, seq[1:]))
False
>>> seq = [9, 8, 5, 4, 3, 2]
>>> all(earlier >= later for earlier, later in zip(seq, seq[1:]))
True
</code></pre>
<p>这应该是一个好的、快速的方法,因为它避免了python端的循环,很好地短路(如果您在2.x中使用<code>itertools.izip()</code>),并且是好的、清晰的、可读的(例如,避免了索引上的循环)。</p>
<p>注意,所有迭代器(不仅仅是序列)的通用解决方案也是可能的:</p>
<pre><code>first, second = itertools.tee(iterable)
next(second)
all(earlier >= later for earlier, later in zip(first, second))
</code></pre>