我有一个清单。
l1 = [0, 0, 2, 0]
l2 = [0, 0, 0, 0]
如果列表中包含非零元素,我想打印列表。
输出:
如果传递了一个列表,则只打印具有非零元素的列表。在上面的示例中,只会打印l1。
[0, 0, 2, 0]
我想知道它的效率如何。谢谢!
答案 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)