如果包含非零元素,则获取列表



我有一个列表。

l1 = [0, 0, 2, 0]
l2 = [0, 0, 0, 0]

如果列表中包含非零元素,我想打印列表。

输出:

如果一个列表通过,则只会打印具有非零元素的列表。在上面的示例中,只会打印 l1。

[0, 0, 2, 0]

我想知道它能有多高效。谢谢!

在列表中使用 any

for lst in (l1, l2):
    if any(lst):
        print(lst)

您还可以使用all

for lst in (l1, l2):
    if all(x != 0 for x in lst):
        print(lst)

我希望这有所帮助。

您可以使用内置函数any()

来自 Python 的文档:

任意(可迭代)
如果可迭代对象的任何元素为 true,则返回 True。如果 可迭代对象为空,返回 False

这是一个代码:

for l in [l1,l2, ..., ln]:
    if any(l):
        print(l) 

你可以试试这个:

lists = [[0, 0, 0, 0],[0, 0, 2, 0]]
for l in lists:
    if set(l)=={0}:
        pass
    else:
        print l 
您可以使用

内置any来测试列表是否至少包含一个非 Falsy/非零元素。

零是假的,其实是唯一的假数:

>>> bool(0)
False

因此,您可以轻松执行以下操作:

for lst in (l1, l2):
   if any(lst):
      print(lst)

只要您的列表仅包含数字并且您不愿意对非数字进行解释,这将提供正确的结果。

在评论中回答,但我会将其作为答案发布:

for l in filter(any, (l1, l2)):
    print(l)

filterany 的组合使得 print 只对具有非零元素的列表执行。 any在遇到第一个非零(或真值)值时立即返回False。对于整数,0 是唯一bool(i)为假的i

最新更新