简洁的蟒蛇说法是什么
if <none of the elements of this array are None>:
# do a bunch of stuff once
答案 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):
但是,频繁使用any
和all
的人(无论是使用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)