溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中怎樣判斷列表是否為空

發(fā)布時(shí)間:2021-02-08 11:46:14 來(lái)源:億速云 閱讀:203 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Python中怎樣判斷列表是否為空,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

在 Python 中有很多檢查列表是否是空的方式,在討論解決方案前,先說(shuō)一下不同方法涉及到的不同因素。

我們可以把判斷表達(dá)式可以分為兩個(gè)陣營(yíng):

  1. 對(duì)空列表的顯式比較

  2. 對(duì)空列表的隱式求值

這意味著什么?

顯式比較

我們從顯式比較開始說(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ù)類型。

關(guān)于“Python中怎樣判斷列表是否為空”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI