<p>我有两份清单:</p>
<pre><code>threshold=[0.123,0.108,0.102,0.087]
retention=[0.19,1,0.57,5,0.09]
</code></pre>
<p>我想知道每个<code>retention</code>元素是否在<code>threshold</code>列表中</p>
<p>我的代码在此说明:</p>
<pre><code>ca2=[(b>retention[0]>a) for b,a in zip(threshold[::1],threshold[1::1])]
ca3=[(b>retention[1]>a) for b,a in zip(threshold[::1],threshold[1::1])]
ca4=[(b>retention[2]>a) for b,a in zip(threshold[::1],threshold[1::1])]
ca5=[(b>retention[3]>a) for b,a in zip(threshold[::1],threshold[1::1])]
ca6=[(b>retention[4]>a) for b,a in zip(threshold[::1],threshold[1::1])]
</code></pre>
<p>如您所见,它请求<code>retention[0]</code>是否在<code>threshold</code>中的哪个元素之间</p>
<p>我需要比较<code>retention</code>中的每个元素。我的代码可以工作,但它是多余的,我认为没有效率。我还想自动与<code>threshold</code>中的另外两个元素进行比较。如果您能指导我或帮助我提高代码的效率,我将不胜感激,因为保留列表可能会更长</p>
<p>您可以生成一个字典,其中保留值作为键,阈值比较列表作为值。此外,如果将zip对象强制转换为列表,则不需要每次迭代都创建它</p>
<pre><code>t = list(zip(threshold, threshold[1:]))
print({i: [(b > i > a) for b, a in t] for i in retention})
</code></pre>