如何处理 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)
我在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)