Python 正在获取最接近0的数字,并且可以是负数

Python 正在获取最接近0的数字,并且可以是负数,python,arrays,Python,Arrays,我有以下范围,我想选择0的数字。在下面的数组中,-4将是壁橱编号和正确答案。提前谢谢 num_array = [-37,-24,-18,-10,-4,5,12,18,26] 跟踪最小的正数和最大的负数。如果列表中没有0,则从上述两个数字中选择最接近的一个 import sys a = [-37,-24,-18,-10,-4,5,12,18,26] maxn = sys.maxsize minn = -sys.maxsize - 1 f = 0 for i in range(len(a)):

我有以下范围,我想选择
0
的数字。在下面的数组中,
-4
将是壁橱编号和正确答案。提前谢谢

num_array = [-37,-24,-18,-10,-4,5,12,18,26]
跟踪最小的正数和最大的负数。如果列表中没有
0
,则从上述两个数字中选择最接近的一个


import sys
a = [-37,-24,-18,-10,-4,5,12,18,26]
maxn = sys.maxsize
minn = -sys.maxsize - 1
f = 0
for i in range(len(a)):
    if a[i] == 0:
        ans = 0
        f = 1
        break
    elif a[i] > 0 and a[i] < maxn :
        maxn = a[i]
    elif a[i] < 0 and a[i] > minn :
        minn = a[i]
    else:
        None
if f == 0:
    if abs(maxn) < abs(minn):
        ans = maxn
    else:
        ans = minn
print(ans)

导入系统
a=[-37,-24,-18,-10,-4,5,12,18,26]
maxn=sys.maxsize
minn=-sys.maxsize-1
f=0
对于范围内的i(len(a)):
如果a[i]==0:
ans=0
f=1
打破
如果a[i]>0且a[i]minn:
minn=a[i]
其他:
没有一个
如果f==0:
如果abs(最大值)
跟踪最小的正数和最大的负数。如果列表中没有
0
,则从上述两个数字中选择最接近的一个


import sys
a = [-37,-24,-18,-10,-4,5,12,18,26]
maxn = sys.maxsize
minn = -sys.maxsize - 1
f = 0
for i in range(len(a)):
    if a[i] == 0:
        ans = 0
        f = 1
        break
    elif a[i] > 0 and a[i] < maxn :
        maxn = a[i]
    elif a[i] < 0 and a[i] > minn :
        minn = a[i]
    else:
        None
if f == 0:
    if abs(maxn) < abs(minn):
        ans = maxn
    else:
        ans = minn
print(ans)

导入系统
a=[-37,-24,-18,-10,-4,5,12,18,26]
maxn=sys.maxsize
minn=-sys.maxsize-1
f=0
对于范围内的i(len(a)):
如果a[i]==0:
ans=0
f=1
打破
如果a[i]>0且a[i]minn:
minn=a[i]
其他:
没有一个
如果f==0:
如果abs(最大值)
让我们执行
min
并通过
键传递选择

min(num_array, key=lambda x:abs(x-0))
-4
检查-1

num_array = [-37,-24,-18,-10,-4,5,12,18,26,-1]
min(num_array, key=lambda x:abs(x-0))
-1

让我们执行
min
并通过
键传递选择

min(num_array, key=lambda x:abs(x-0))
-4
检查-1

num_array = [-37,-24,-18,-10,-4,5,12,18,26,-1]
min(num_array, key=lambda x:abs(x-0))
-1

@JonClements…我不确定我是否理解你,但是-1会返回..嗯,也许我不理解,但这给了我-1,但这不是数组中的一个选择,-1示例只是显示了一个比-4更接近的值+1将是一个更好的示例,以表明它也适用于大于零的值(因为它使用abs)。这个答案是正确的,尽管我不确定为什么要减去零。@paulwhip我想选择接近0的数字,这正是这个解决方案的作用。你不需要减去零-这是一个'no op'@JonClements…我不确定我是否理解你,但-1会返回..嗯,也许我不理解,但这给了我-1,但这不是数组中的一个选择,-1示例只是显示了一个比-4更接近的值+1将是一个更好的示例,以表明它也适用于大于零的值(因为它使用abs)。这个答案是正确的,尽管我不确定为什么要减去零。@paulwhip我想选择接近0的数字,这正是这个解决方案的作用。你不需要减去零-这是一个'没有操作'谢谢你,这正是我预期的工作!!非常酷的技巧,但将记住这一点,为未来的项目。谢谢你,这正是我所期待的!!非常酷的技巧,但将记住这一点,为未来的项目。