我有以下函式告訴我們 aseries
至少有一個負值:
def has_negative(series):
v=False
for i in range(len(series)):
if series[i]<0:
v=True
break
return v
當我們在一個例子中使用這個函式時,我們得到:
y=[1,2,3,4,5,6,7,8,9]
z=[1,-2,3,4,5,6,7,8,9]
print(has_negative(y))
print(has_negative(y))
輸出:
>>> False
>>> True
該功能似乎運行良好,雖然我想縮短它,但如果您提出任何建議,我們將不勝感激
uj5u.com熱心網友回復:
您可以使用內置的any函式,如下所示:
def has_negative(lst):
return any(e < 0 for e in lst)
print(has_negative([1,2,3,4,5,6,7,8,9]))
print(has_negative([1,-2,3,4,5,6,7,8,9]))
輸出:
False
True
編輯:
圍繞這個和其他建議的答案做了一些時間測驗。雖然這很簡潔且功能正確,但性能不佳。保持簡單并使用@quamrana 的第一個建議 - 它要快得多
uj5u.com熱心網友回復:
您可以對串列進行排序并獲取第一個元素,檢查它是否為負數。使用這種方法,您不必遍歷陣列:
sorted(series)[0] < 0
uj5u.com熱心網友回復:
您可以進行多項改進:
def has_negative(series):
for i in series:
if i < 0:
return True
return False
或者它可以像這樣收縮成一行:
print(bool([i for i in z if i<0]))
uj5u.com熱心網友回復:
添加:
為了保持簡潔明了,您還可以在 lambda 函式中使用串列理解,如下所示:
has_negative = lambda series: True if [series for x in series if x < 0] else False
z = [1,-2,3,4,5,6,7,8,9]
has_negative(z)
輸出:
>>> True
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537603.html
上一篇:如何在R中的函式內部使用函式?