Python 中判斷列表是否為空的方法
在判斷列表是否為空時,你更喜歡哪種方式?決定因素是什么?
在 Python 中有很多檢查列表是否是空的方式,在討論解決方案前,先說一下不同方法涉及到的不同因素。
我們可以把判斷表達式可以分為兩個陣營:
- 對空列表的顯式比較
- 對空列表的隱式求值
這意味著什么?
顯式比較
我們從顯式比較開始說起,無論我們使用列表符號 [] 還是聲明空列表的函數(shù) list() ,遵循的策略是查看待檢查列表是否與空列表完全相等。
# 都是用來創(chuàng)建空列表 a = [] b = list() print(a == b) # True
另外,我們可以使用 len() 函數(shù)返回列表中的元素個數(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ū)別呢?
很多人習慣于使用顯式比較的方式。但是如果你遵循鴨子類型的設計風格,那么會更加偏向于使用的是隱式方法。
什么是鴨子類型
「鴨子類型」這個此來自以下短語:
當看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。
從功能上講,這是對對象實際數(shù)據(jù)類型壓力較小的一種確認。在鴨子類型中,關注點在于對象的行為,能作什么(比如,可迭代 iterable);而不是關注對象所屬的類型。鴨子類型在動態(tài)語言中經(jīng)常使用,非常靈活。
鴨子類型優(yōu)先考慮便利性而非安全性,從而可以使用更靈活的代碼來適應更廣泛的用途,它不會像傳統(tǒng)方式那么嚴格。
我們應該使用哪種方式?
當我們越了解隱式求值,就越傾向于使用這種方式,因為我們知道空列表將被求值為 False 。
a = [] print(bool(a)) # False
這使得我們可以合并那些很長的檢查表達式,如:
# 之前 if isinstance(a, list) and len(a) > 0: print("Processing list...") # 之后 if a: print("Processing list...")
當然,最終的選擇還取決于這個本次檢查的意圖:
- 如果你檢查空列表是為了對其進行迭代,那么隱式求值是更合適的方法。
- 如果你檢查空列表是為了在之后調(diào)用列表中的方法,那么可以考慮使用顯式比較來同時驗證數(shù)據(jù)類型。
總結(jié)
以上所述是小編給大家介紹的Python 中判斷列表是否為空的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關文章
python的Crypto模塊實現(xiàn)AES加密實例代碼
這篇文章主要介紹了python的Crypto模塊實現(xiàn)AES加密實例代碼,簡單介紹了實現(xiàn)步驟,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01python實現(xiàn)基本進制轉(zhuǎn)換的方法
這篇文章主要介紹了python實現(xiàn)基本進制轉(zhuǎn)換的方法,涉及Python數(shù)學運算的取余與字符串操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07使用pyecharts生成Echarts網(wǎng)頁的實例
今天小編就為大家分享一篇使用pyecharts生成Echarts網(wǎng)頁的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn)
本文主要介紹了python數(shù)據(jù)處理之Pandas類型轉(zhuǎn)換的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04