你需要學(xué)會的8個Python列表技巧
原作者:Nik Piepenbreier
翻譯&內(nèi)容補充:費弗里
原文地址:https://towardsdatascience.com/advanced-python-list-techniques-c6195fa699a3
列表(List)是你使用Python過程中接觸最為頻繁的數(shù)據(jù)結(jié)構(gòu),也是功能最為強大的幾種數(shù)據(jù)結(jié)構(gòu)之一。Python列表非常的萬能且蘊含著許多隱藏技巧,下面我們就來探索一些常用的列表技巧。
1 列表元素的過濾
1.1 filter()的使用
filter()函數(shù)接受2個參數(shù):1個函數(shù)對象以及1個可迭代的對象,接下來我們定義1個函數(shù)然后對1個列表進行過濾。
首先我們創(chuàng)建1個列表,并且剔除掉小于等于3的元素:
回顧一下發(fā)生了什么:
1. 我們定義了列表original_list
2. 接著我們定義了一個接受數(shù)值型參數(shù)number的函數(shù)filter_three,當傳入的參數(shù)值大于3時會返回True,反之則會返回False
3. 我們定義了filter對象filtered,其中filter()接受的第一個參數(shù)是函數(shù)對象,第二個參數(shù)是列表對象
4. 最終我們將filter對象轉(zhuǎn)化為列表,最終得到經(jīng)filter_three過濾后original_list內(nèi)留下的元素。
1.2 使用列表推導(dǎo)式
類似的,我們也可以利用列表推導(dǎo)式來過濾列表元素,作為一種生成和修改列表優(yōu)雅的方式,列表推導(dǎo)式想必大家都比較熟悉了,下面是使用列表推導(dǎo)完成同樣任務(wù)的過程:
2 修改列表
2.1 map()的使用
Python中內(nèi)置的map()函數(shù)使得我們可以將某個函數(shù)應(yīng)用到可迭代對象內(nèi)每一個元素之上。
比方說我們想獲取到一個列表對象中每一個元素的平方,就可以使用到map()函數(shù),就像下面的例子一樣:
類似filter()的工作過程,下面我們來看看發(fā)生了什么:
1. 首先我們定義了列表original_list,以及接受數(shù)值型參數(shù)并返回其平方值的函數(shù)square()
2. 接著我們定義了map對象squares,類似filter(),map()接受的第一個參數(shù)是函數(shù)對象,第二個參數(shù)是列表對象
3. 最終我們將map對象squares列表化,就得到了想要的結(jié)果
2.2 使用列表推導(dǎo)式
同樣的我們也可以使用列表推導(dǎo)式完成同樣的任務(wù):
3 利用zip()來組合列表
有些情況下我們需要將兩個或以上數(shù)量的列表組合在一起,這類需求使用zip()來完成非常方便。
zip()函數(shù)接收多個列表作為參數(shù)傳入,進而得到每個位置上一一對應(yīng)的元素組合,就像下面的例子一樣:
4 顛倒列表
Python中的列表是有序的數(shù)據(jù)結(jié)構(gòu),正因如此,列表中元素的順序很重要,有些時候我們需要翻轉(zhuǎn)列表中所有元素的順序,可以通過Python中的切片操作,用::-1來快捷地實現(xiàn):
5 檢查列表中元素的存在情況
有些情況下我們想要檢查列表中是否存在某個元素,這種時候就可以使用到Python中的in運算符,譬如說我們有一個記錄了所有比賽獲勝隊伍名稱的列表,當我們想查詢某個隊名是否已獲勝時,可以像下面的例子一樣:
6 找出列表中出現(xiàn)次數(shù)最多的元素
有些情況下我們想要找出列表中出現(xiàn)次數(shù)最多的元素,譬如對記錄若干次拋硬幣結(jié)果的列表,找出哪一種結(jié)果出現(xiàn)次數(shù)最多,就可以參考下面的例子:
7 展平嵌套列表
有些情況下我們會遇到一些嵌套的列表,其每個元素又是各自不同的列表,這種時候我們就可以利用列表推導(dǎo)式來把這種嵌套列表展平,如下面2層嵌套的例子:
額外補充:
原作者這里只考慮到兩層嵌套的列表,如果是更多層嵌套,就需要有多少層寫多少for循環(huán),比較麻煩,其實還有一種更好的方法,我們可以使用pip install dm-tree來安裝tree這個專門用于展平嵌套結(jié)構(gòu)的庫,可以展平任意層嵌套列表,使用例子如下:
8 檢查唯一性
如果你想要查看列表中的值是否都是唯一值,可以使用Python中的set數(shù)據(jù)結(jié)構(gòu)的特點,譬如下面的例子:
以上就是本文的全部內(nèi)容,如有疑問歡迎在評論區(qū)討論~
以上就是你需要學(xué)會的8個Python列表技巧的詳細內(nèi)容,更多關(guān)于Python列表技巧的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何解決Python讀取圖片路徑存在轉(zhuǎn)義字符的問題
這篇文章主要為大家詳細介紹了如何解決Python讀取圖片路徑時存在轉(zhuǎn)義字符的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下2023-07-07解決Jupyter NoteBook輸出的圖表太小看不清問題
這篇文章主要介紹了解決Jupyter NoteBook輸出的圖表太小看不清問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python內(nèi)置函數(shù)int()用法簡單介紹
這篇文章主要給大家介紹了關(guān)于Python內(nèi)置函數(shù)int()用法的相關(guān)資料,int()函數(shù)常用來把其他類型轉(zhuǎn)換為整數(shù),文中通過代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考借鑒價值,需要的朋友可以參考下2024-05-05Python中shapefile轉(zhuǎn)換geojson的示例
今天小編就為大家分享一篇關(guān)于Python中shapefile轉(zhuǎn)換geojson的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01python和Appium移動端多設(shè)備自動化測試框架實現(xiàn)
這篇文章主要介紹了python和Appium移動端多設(shè)備自動化測試框架實現(xiàn),基于pytest和Appium框架,支持Android和iOS功能自動化的測試框架的相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-04-04python3基于OpenCV實現(xiàn)證件照背景替換
這篇文章主要為大家詳細介紹了python3基于OpenCV實現(xiàn)證件照背景替換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實現(xiàn)方法
網(wǎng)絡(luò)編程指在網(wǎng)絡(luò)環(huán)境中,如何實現(xiàn)不在同一物理位置中的計算機之間進行數(shù)據(jù)通信,本文重點給大家介紹Python?基于TCP?傳輸協(xié)議的網(wǎng)絡(luò)通信實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2022-02-02