我正在尝试进行一个简单的测试,True如果列表的任何结果都会返回None.但是,我希望0并且''不会导致返回True.
list_1 = [0, 1, None, 4]
list_2 = [0, 1, 3, 4]
any(list_1) is None
>>>False
any(list_2) is None
>>>False
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,any()在这种情况下,函数不是很有用.
Mar*_*ers 69
对于list对象可以简单地使用成员资格测试:
None in list_1
Run Code Online (Sandbox Code Playgroud)
比如any(),对a的成员资格测试list会扫描所有元素,但会在找到匹配后立即返回短路.
any()返回,True或False从来没有None,所以你的any(list_1) is None测试肯定不会去任何地方.你必须传入一个生成器表达式any()来迭代,而不是:
any(elem is None for elem in list_1)
Run Code Online (Sandbox Code Playgroud)
list_1 = [0, 1, None, 4]
list_2 = [0, 1, 3, 4]
any(x is None for x in list_1)
>>>True
any(x is None for x in list_2)
>>>False
Run Code Online (Sandbox Code Playgroud)