擅长:python、mysql、java
<p>我假设你能把你的一组数字列成一个单子</p>
<p><code>set = [5, 10, 20, 25, 50, 100]</code></p>
<p>然后可以使用<code>min</code>和<code>key</code>定义舍入函数:</p>
<pre><code>def custom_round(set, value):
return min(set, key=lambda x:abs(x-value))
</code></pre>
<p>如果有许多值需要计算,可以将其与列表理解相结合,例如</p>
<pre><code>values = [1,2,5,6,8,9,10,25,28,99]
rounded = [custom_round(set, v) for v in values]
</code></pre>
<p><strong>这里发生了什么?</strong></p>
<p>当<code>min</code>与lambda函数组合作为键时,该函数首先应用于数组中的所有元素,然后返回与这个新数组的min对应的原始数组的元素。在上面的示例中,lambda函数查找从目标<code>value</code>到每个可以舍入到的值的绝对距离,因此<code>min</code>返回最接近<code>value</code>的<code>set</code>元素。你知道吗</p>