سؤال

هل هناك أي وظيفة ذكية مدمجة أو شيء سيعود 1 ل min() مثال أدناه؟ (أراهن أن هناك سببًا قويًا لعدم إرجاع أي شيء ، لكن في حالتي الخاصة ، أحتاج إلى تجاهلها None القيم سيئة حقا!)

>>> max([None, 1,2])
2
>>> min([None, 1,2])
>>> 
هل كانت مفيدة؟

المحلول

None يتم إرجاعها

>>> print min([None, 1,2])
None
>>> None < 1
True

إذا كنت تريد العودة 1 عليك تصفية None بعيد:

>>> L = [None, 1, 2]
>>> min(x for x in L if x is not None)
1

نصائح أخرى

باستخدام تعبير المولد:

>>> min(value for value in [None,1,2] if value is not None)
1

في النهاية ، يمكنك استخدام المرشح:

>>> min(filter(lambda x: x is not None, [None,1,2]))
1

اجعل أي شيء لا حصر له ل min ():

def noneIsInfinite(value):
    if value is None:
        return float("inf")
    else:
        return value

>>> print min([1,2,None], key=noneIsInfinite)
1

ملاحظة: هذا النهج يعمل لبيثون 3 كذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top