擅长:python、mysql、java
<p>如果你刚开始的话,我会给你展示一种更直观的替代方法:</p>
<pre><code>sets = [(myList[i-1], myList[i]) for i in range(len(myList)) if myList[i] == 9]
</code></pre>
<p>获取列表长度范围内的索引,如果位置<code>i</code>处的值等于<code>9</code>,则获取相邻元素。在</p>
<p>结果是:</p>
^{pr2}$
<p>这比其他方法效率低,但我决定取消删除它,以向您展示一种不同的方法。您可以使用<code>enumerate()</code>来加快速度:</p>
<pre><code>sets = [(myList[i-1], j) for i, j in enumerate(myList) if j == 9]
</code></pre>
<hr/>
<p><em>注意</em>在边缘情况下,<code>myList[0] = 9</code></em></strong>没有<code>zip</code>的理解行为和有{<cd5>}的理解行为是不同的</strong>。在</p>
<p>具体来说,如果<code>myList = [9, 1, 8, 9, 2, 4, 9, 6, 7, 9, 8]</code>,则:</p>
<pre><code>[(myList[i-1], myList[i]) for i in range(len(myList)) if myList[i] == 9]
# results in: [(8, 9), (8, 9), (4, 9), (7, 9)]
</code></pre>
<p>同时:</p>
<pre><code>[(x, y) for x, y in zip(myList, myList[1:]) if y==9]
# results in: [(8, 9), (4, 9), (7, 9)]
</code></pre>
<p>这取决于你决定哪一个符合你的标准,我只是指出,它们并不是在所有情况下都表现相同。在</p>