我在python中有一个any()
语句,memo_field
数组中的一些元素是None
。
any(memo_field[1][0] in row[9] for memo_field in memo_fields)
处理数组中NoneType
个元素的最佳方法是什么?
答案 0 :(得分:0)
您可以将filter函数应用于memo_fields以删除任何None元素:
any(memo_field[1][0] in row[9] for memo_field in filter(None, memo_fields))
您应该知道,当使用None
作为过滤的第一个参数时,memo_fields
中的任何值都是假的' (即[],{},False,None)将被删除。在你的情况下,这可能是有利的,但值得注意。
答案 1 :(得分:0)
此声明必须优于上述声明。
any(memo_field[1][0] in row[9] for memo_field in memo_fields if memo_field is not None)
如果它们是None,它将忽略一些memo_fields。它不会忽略这些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)