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

时间:2017-11-09 13:58:54

标签: python list

我有一个清单。

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

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

输出:

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

[0, 0, 2, 0]

我想知道它的效率如何。谢谢!

5 个答案:

答案 0 :(得分:2)

在您的列表中使用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)

我希望这会有所帮助。

答案 1 :(得分:1)

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

来自Python的documentation

  

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

这是一段代码:

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

答案 2 :(得分:1)

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

零是假的,实际上是唯一的假数:

>>> bool(0)
False

所以你可以很容易地做到:

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

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

答案 3 :(得分:0)

你可以试试这个:

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

答案 4 :(得分:0)

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

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

filterany的组合使得print仅对具有非零元素的列表执行。一旦遇到第一个非零(或真值)值,any就会返回False。对于整数,0i唯一bool(i)为假的。{/ p>