如何处理 any() 语句中的 NoneType?

How to handle NoneType in any() statement?

我在python中有一个any()语句,memo_field数组中的一些元素是None

any(memo_field[1][0] in row[9] for memo_field in memo_fields)

处理数组中 NoneType 个元素的最佳方法是什么?

您可以将 filter 函数应用于 memo_fields 以删除任何 None 个元素:

any(memo_field[1][0] in row[9] for memo_field in filter(None, memo_fields))

您应该知道,当使用 None 作为过滤的第一个参数时,memo_fields 中任何 'falsey' 的值(即 []、{}、False、None) 将被删除。在您的情况下,这可能是有利的,但值得注意。

这个说法肯定比上面的好

any(memo_field[1][0] in row[9] for memo_field in memo_fields if memo_field is not None)

它会忽略一些 memo_fields 如果它们是 None。它不会忽略这些 memo_fields: False, 0, [], {}, ()...

但实际上,我建议你做一些更好的事情,比如:

any(memo_field[1][0] in row[9] for memo_field in memo_fields 
    if isinstance(memo_field, (tuple, list)) and 
       len(memo_field) > 1 and 
       isinstance(memo_field[1], (tuple, list)) and 
       len(memo_field[1]) > 0)