ang*_*lar 2 python distance min
说我有一个值列表:
l = [1, -1]
Run Code Online (Sandbox Code Playgroud)
并且我想获取更接近其他值的列表值,例如0,我可以使用此:
min(l, key=lambda v: abs(v - 0))
# prints 1
Run Code Online (Sandbox Code Playgroud)
但如果我改变列表中值的顺序,如:
l = [-1, 1]
Run Code Online (Sandbox Code Playgroud)
而且我在上面调用相同的函数-1而不是1,所以如果在同一距离有正值和负值,我怎么能总是得到正值?
你可以让lambda函数返回一个元组,其中第二项表示它是正数还是负数:
min(l, key=lambda v: (abs(v - 0), v < 0))
Run Code Online (Sandbox Code Playgroud)
比较元组时,第一项是优先级,第二项是第二项.因此,第二项充当"决胜局".因为False < True,这将优先1(变为(1, False))-1(成为(1, True).
| 归档时间: |
|
| 查看次数: |
703 次 |
| 最近记录: |