簡體   English   中英

如果列表只包含0,我如何在python中打印?

[英]how do I print in python if a list contains only 0s?

如果列表只包含0s,我如何在python中打印?

list1=[0,0,0,0,0,0]
if list1 has all 0s
print("something")

我希望輸出是“東西”

使用all()

if all(item == 0 for item in list1):
   print("something")

演示:

>>> list1 = [0,0,0,0,0,0]
>>> all(item == 0 for item in list1)
True

另一種選擇是使用sets ,如果列表中的所有項目都是可清除的:

>>> set(list1) == {0}
True

但是這將在內存中創建一個集合並且它不會像all()那樣短路,因此它在內存效率低下並且在平均情況下會變慢。

>>> list1 = [0,0,0,0,0,0]*1000 + range(1000)
>>> %timeit set(list1) == {0}
1000 loops, best of 3: 292 us per loop
>>> %timeit all(item == 0 for item in list1)
1000 loops, best of 3: 1.04 ms per loop

>>> list1 = range(1000) + [0,0,0,0,0,0]*10
>>> shuffle(list1)
>>> %timeit set(list1) == {0}
10000 loops, best of 3: 61.6 us per loop
>>> %timeit all(item == 0 for item in list1)
1000000 loops, best of 3: 1.3 us per loop

我認為一種非常快速的方法是使用[].count

L.count(0) == len(L)

如果列表是巨大的並且大多數不是零,那么all使用迭代器的方法可能會更好。

您可以通過執行以下操作跳過列表理解/生成器表達式:

if not any(list1):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM