擅长:python、mysql、java
<p>也许最简单的方法是使用<code>zip</code>,但这需要将所有行加载到内存中并创建2个列表,如果实际有200万行,这可能会很棘手:</p>
<pre><code>li = [1, 1, 2, 2, 3, 3, 1, 1, 2, 1, 2, 3]
print([index + 1 for index, (a, b) in enumerate(zip(li[:-1], li[1:])) if a != b])
# [2, 4, 6, 8, 9, 10, 11]
</code></pre>
<p>更保守的方法是“缓存”最后一个值:</p>
^{pr2}$
<p>输出</p>
<pre><code>2
4
6
8
9
10
11
</code></pre>