哪种方法更好地跳过 'NoneType' 变量?

Which way is better to skip the 'NoneType' variable?

一个列表包含多个 NoneType 元素。要跳过 NoneType

for item in list :
    if item is not None :
        fp.write(item + '\n')

#OR

for item in list : 
    try :
        fp.write(item + '\n')
    except :
        pass

哪个更好,为什么?

根据一般经验,如果可以的话,您不应该真正使用 try: except: 模式来控制流。引发在此上下文中不必要的异常会产生一些开销。希望这有帮助。

正如评论中提到的那样,try 方法不是好方法,因为您可能会因为该块中出现的任何其他异常而跳过某个元素。

所以第一个选项更好。这里有一个替代方案,你可以确定所有元素不是None,但它会消耗更多内存:

for item in (element for element in list if element is not None):
    fp.write(item + '\n')

P.S。不要使用内置名称作为变量名称,在您的情况下 - list.

第二个不太好,因为它会在遇到 None 类型元素时抛出异常。异常将在 python 中以自己的方式处理。

在你的情况下,你给了一个通行证,所以这将完成。

更干净的方法是:

clean = [x for x in lis if x != None]

或者正如评论中所指出的,你也可以使用不是,即使它基本上编译成相同的字节码:

clean = [x for x in lis if x is not None]

希望这对您有所帮助。在罗马时就像罗马人一样:)