Python 中判斷列表是否為空的方法
在判斷列表是否為空時(shí),你更喜歡哪種方式?決定因素是什么?
在 Python 中有很多檢查列表是否是空的方式,在討論解決方案前,先說(shuō)一下不同方法涉及到的不同因素。
我們可以把判斷表達(dá)式可以分為兩個(gè)陣營(yíng):
- 對(duì)空列表的顯式比較
- 對(duì)空列表的隱式求值
這意味著什么?
顯式比較
我們從顯式比較開(kāi)始說(shuō)起,無(wú)論我們使用列表符號(hào) [] 還是聲明空列表的函數(shù) list() ,遵循的策略是查看待檢查列表是否與空列表完全相等。
# 都是用來(lái)創(chuàng)建空列表 a = [] b = list() print(a == b) # True
另外,我們可以使用 len() 函數(shù)返回列表中的元素個(gè)數(shù)。
a = []
if len(a) == 0:
print("The list is empty")
隱式求值
和顯式比較相反,隱式求值遵循的策略是:將空列表求值為布爾值的 False ,將有元素填充的列表求值為布爾值的 True 。
a = []
b = [1]
if a:
print("Evaluated True")
else:
print("Evaluated False")
if b:
print("Evaluated True")
else:
print("Evaluated False")
# 輸出
Evaluated False
Evaluated True
那么,顯式比較和隱式求值有什么區(qū)別呢?
很多人習(xí)慣于使用顯式比較的方式。但是如果你遵循鴨子類型的設(shè)計(jì)風(fēng)格,那么會(huì)更加偏向于使用的是隱式方法。
什么是鴨子類型
「鴨子類型」這個(gè)此來(lái)自以下短語(yǔ):
當(dāng)看到一只鳥走起來(lái)像鴨子、游泳起來(lái)像鴨子、叫起來(lái)也像鴨子,那么這只鳥就可以被稱為鴨子。
從功能上講,這是對(duì)對(duì)象實(shí)際數(shù)據(jù)類型壓力較小的一種確認(rèn)。在鴨子類型中,關(guān)注點(diǎn)在于對(duì)象的行為,能作什么(比如,可迭代 iterable);而不是關(guān)注對(duì)象所屬的類型。鴨子類型在動(dòng)態(tài)語(yǔ)言中經(jīng)常使用,非常靈活。
鴨子類型優(yōu)先考慮便利性而非安全性,從而可以使用更靈活的代碼來(lái)適應(yīng)更廣泛的用途,它不會(huì)像傳統(tǒng)方式那么嚴(yán)格。
我們應(yīng)該使用哪種方式?
當(dāng)我們?cè)搅私怆[式求值,就越傾向于使用這種方式,因?yàn)槲覀冎揽樟斜韺⒈磺笾禐?False 。
a = [] print(bool(a)) # False
這使得我們可以合并那些很長(zhǎng)的檢查表達(dá)式,如:
# 之前
if isinstance(a, list) and len(a) > 0:
print("Processing list...")
# 之后
if a:
print("Processing list...")
當(dāng)然,最終的選擇還取決于這個(gè)本次檢查的意圖:
- 如果你檢查空列表是為了對(duì)其進(jìn)行迭代,那么隱式求值是更合適的方法。
- 如果你檢查空列表是為了在之后調(diào)用列表中的方法,那么可以考慮使用顯式比較來(lái)同時(shí)驗(yàn)證數(shù)據(jù)類型。
總結(jié)
以上所述是小編給大家介紹的Python 中判斷列表是否為空的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解(最新推薦)
這篇文章主要介紹了Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
使用with torch.no_grad():顯著減少測(cè)試時(shí)顯存占用
這篇文章主要介紹了使用with torch.no_grad():顯著減少測(cè)試時(shí)顯存占用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
python使用pyaudio錄音和格式轉(zhuǎn)化方式
這篇文章主要介紹了python使用pyaudio錄音和格式轉(zhuǎn)化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
python進(jìn)階教程之函數(shù)對(duì)象(函數(shù)也是對(duì)象)
這篇文章主要介紹了python進(jìn)階教程之函數(shù)對(duì)象,函數(shù)對(duì)象是指函數(shù)也是對(duì)象,本文還講解了lambda函數(shù)、函數(shù)作為參數(shù)傳遞、map()函數(shù)、filter()函數(shù)、reduce()函數(shù)等內(nèi)容,需要的朋友可以參考下2014-08-08
Python實(shí)現(xiàn)自動(dòng)批量修改文件名稱
這篇文章主要為大家詳細(xì)介紹了如何基于Python語(yǔ)言,實(shí)現(xiàn)按照一定命名規(guī)則批量修改多個(gè)文件的文件名的效果,文中的示例代講解詳細(xì),感興趣的可以了解一下2023-01-01
python爬取w3shcool的JQuery課程并且保存到本地
本文主要介紹python爬取w3shcool的JQuery的課程并且保存到本地的方法解析。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04

