擅长:python、mysql、java
<p>这将在不混淆不同索引的最小/最大值的情况下工作(例如33000):</p>
<pre><code>minsalary = [22000,41000,10000,51500,13000]
maxsalary = [35000,95000,34000,65000,31000]
salary = 14000
index = min((b-a,i) for i,(a,b) in enumerate(zip(minsalary,maxsalary)) if salary in range(a,b+1))[1]
print(f'Best range is {minsalary[index]} to {maxsalary[index]}, use position {index}')
</code></pre>
<p>下面是一个分解版本,可以更好地隔离每个步骤:</p>
^{pr2}$
<ul>
<li>变量<code>ranges</code>将这两个数组转换为一个元组数组,其中(minimum,maximu)工资在范围内。在</li>
<li><code>indexedRanges</code>变量将索引(位置)添加到ranges元组中</li>
<li><code>eligibleIndexes</code>过滤器<code>indexedRanges</code>只保留薪资在范围内的项目,并返回范围大小和相应的索引</li>
<li><code>smallest</code>变量接收<code>eligibleIndexes</code>的最小条目,这是范围大小最小的条目。结果是一个具有大小和索引的元组。在</li>
<li>最佳合格范围的<code>index</code>是<code>smallest</code>元组的第二部分。在</li>
</ul>