擅长:python、mysql、java
<p>在这样的问题中,正如您也注意到的,必须格外小心,以免弄乱您的比较以及您正在处理的索引。工作解决方案如下所示:</p>
<pre><code>res = []
for i, (x,y) in enumerate(zip(lst[::2], lst[1::2])):
if x < 2.0 and y < 2.0:
res.append(lst[2+2*i])
print(res) # [1.4, 1.4, 14.8, 11.19]
</code></pre>
<p>如果您想保存一些字节,它也会出现在列表理解中:</p>
<pre><code>res = [lst[2*i] for i, (x,y) in enumerate(zip(lst[::2], lst[1::2]), 1) if max(x,y)<2.0]
</code></pre>
<p>在这两种情况下,<code>lst</code>是您的原始列表</p>
<p>我很有信心你能理解,但如果不能,请让我知道,我会补充一些进一步的解释</p>
<p>请注意,正如@MisterMiyagi所说,您可以从<code>zip</code>中挤出一些额外的能量,而不是自己<code>enumerat</code>计算索引,如下所示:</p>
<pre><code>res = [z for (x,y,z) in zip(lst[::2], lst[1::2], lst[2::2]) if max(x,y)<2.0]
</code></pre>