簡體   English   中英

python 中的 Function 輸出 -1 或 0 或 1

[英]Function in python that outputs either -1 or 0 or 1

是否有像(修改的)圓形 function ,其中 output 將是 -1,0,1 取決於輸入最接近的數字? 例如0 => 0, -2154 => -1, 10 => 1

目前我正在使用正常的 if else 語句:

if (i==0):
    return 0
elif i > 0: 
    return 1
else:
    return -1

但是有什么辦法可以使它成為單行代碼嗎? 例如使用一些修改過的圓形 function。

您可以使用numpy.sign()

import numpy as np

print(np.sign(1.2))
print(np.sign(-3.4))
print(np.sign(0))

output:

1.0
-1.0
0

沒有任何進口:

def sign(i):
    return (i>0) - (i<0)
    
print(sign(1))
print(sign(-3))
print(sign(0))

output:

1
-1
0

這是一個單線 function 使用普通的香草 python 並且沒有進口。 幾乎沒有比這更簡單的了。

def f(i):
    return -1 if i < 0 else int(bool(i))


In [5]: f(0)
Out[5]: 0

In [6]: f(1)
Out[6]: 1

In [7]: f(-5)
Out[7]: -1

正如另一個答案評論的那樣,您可以使用numpy.sign()方法輕松完成,該方法直接返回您想要的結果。

但是,您可以直接使用內置數學 function 和方法copysign(x, y)將第二個值的符號復制到第一個值。 通過將第一個值設置為 boolean,如果原始值為 0,它將被解釋為 0,否則為 1。 然后我們復制值的符號,這會將 1 轉換為 -1 或保持為正數。

from math import copysign

values = [1, 200, 0, -3, 45, -15]

for value in values:
    print(int(copysign(bool(value), value)))

輸出:

1
1
0
-1
1
-1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM