一个简洁的方式说"阵列中没有一个元素是None"?

时间:2014-10-21 00:09:19

标签: python python-2.7

简洁的蟒蛇说法是什么

if <none of the elements of this array are None>:
   # do a bunch of stuff once

4 个答案:

答案 0 :(得分:11)

为什么不简单,

None not in lst

答案 1 :(得分:7)

all内置对此很好。给定一个iterable,如果iterable的所有元素都计算为True,则返回True

if all(x is not None for x in array):
  # your code

答案 2 :(得分:5)

当然,在这种情况下,Jared's answer显然是最短的,也是最易读的。它还有其他优点(例如,如果从列表切换到set或SortedSet,则会自动变为O(1)或O(log N))。但是有些情况下这种情况不起作用,值得理解如何从你的英语声明,最直接的翻译,到最惯用的翻译。

首先,“数组中没有元素是无”。

Python没有“无”功能。但是如果你想一想,“没有”与“不是任何一个”完全相同。它确实有一个“任何”功能,any。因此,与直接翻译最接近的是:

if not any(element is None for element in array):

但是,频繁使用anyall的人(无论是使用Python还是使用符号逻辑)通常会习惯使用De Morgan's law转换为“正常”形式。 any只是一个迭代的析取,而析取的否定是否定的结合,因此,这转化为Sam Mussmann's answer

if all(element is not None for element in array):

答案 3 :(得分:1)

你可以使用所有

all(i is not None for i in l)