此問題與我的接近,但不是很完美:List minimum in Python with None?。我需要允許列表中所有值的可能性爲None。Python中不是無數的最小值
我有一種情況,我必須在數據庫中查找一些數字,它們可能存在或返回爲空。我需要找到現有數字的最小值。例如:
min_if_exists(1, 2) returns 1
min_if_exists(5, None) returns 5
min_if_exists(None, None) returns None
幸運的是我可以做這樣的事情:
def min_if_exists(a, b):
return min(a, b)
elif a:
return a
elif b:
return b
else:
return None
以下是問題的答案上面提到的:
lowest = min(x for x in (a, b) if x is not None)
有了這一點,但是,如果和b是None,因爲我輸入了一個空序列,所以我得到一個異常。我可以簡單地理解這個例外,或者我可以在序列中包含一個任意大的數字(a,b,100000000)。對於一個任意長的數字序列都可能沒有,我可以(大概)未Pythonically做到這一點:
def min_if_exists(list_of_nums):
not_a_none_exists = False
for n in list_of_nums:
if n is not None:
not_a_none_exists = True
if not_a_none_exists:
return min(x for x in list_of_nums if x is not None)
else:
return None
是否有這樣做的更Python,更簡潔的方式?
您忽略了很快捕獲異常的選項。在我看來,這將是一種Pythonic的做法,考慮到一般的哲學:「最好是做和乞求寬恕而不是要求許可」。 – icktoofay