原作者:Nik Piepenbreier
翻譯&內容補充:費弗里
原文地址:https://towardsdatascience.com/advanced-python-list-techniques-c6195fa699a3
列表(List)是你使用Python過程中接觸最為頻繁的數據結構,也是功能最為強大的幾種數據結構之一。Python列表非常的萬能且蘊含着許多隱藏技巧,下面我們就來探索一些常用的列表技巧。
1 列表元素的過濾
1.1 filter()的使用
filter()函數接受2個參數:1個函數對象以及1個可迭代的對象,接下來我們定義1個函數然後對1個列表進行過濾。
首先我們創建1個列表,並且剔除掉小於等於3的元素:
圖1
回顧一下發生了什麼:
1. 我們定義了列表original_list
2. 接着我們定義了一個接受數值型參數number的函數filter_three,當傳入的參數值大於3時會返回True,反之則會返回False
3. 我們定義了filter對象filtered,其中filter()接受的第一個參數是函數對象,第二個參數是列表對象
4. 最終我們將filter對象轉化為列表,最終得到經filter_three過濾后original_list內留下的元素。
1.2 使用列表推導式
類似的,我們也可以利用列表推導式來過濾列表元素,作為一種生成和修改列表優雅的方式,列表推導式想必大家都比較熟悉了,下面是使用列表推導完成同樣任務的過程:
圖2
2 修改列表
2.1 map()的使用
Python中內置的map()函數使得我們可以將某個函數應用到可迭代對象內每一個元素之上。
比方說我們想獲取到一個列表對象中每一個元素的平方,就可以使用到map()函數,就像下面的例子一樣:
圖3
類似filter()的工作過程,下面我們來看看發生了什麼:
1. 首先我們定義了列表original_list,以及接受數值型參數並返回其平方值的函數square()
2. 接着我們定義了map對象squares,類似filter(),map()接受的第一個參數是函數對象,第二個參數是列表對象
3. 最終我們將map對象squares列表化,就得到了想要的結果
2.2 使用列表推導式
同樣的我們也可以使用列表推導式完成同樣的任務:
圖4
3 利用zip()來組合列表
有些情況下我們需要將兩個或以上數量的列表組合在一起,這類需求使用zip()來完成非常方便。
zip()函數接收多個列表作為參數傳入,進而得到每個位置上一一對應的元素組合,就像下面的例子一樣:
圖5
4 顛倒列表
Python中的列表是有序的數據結構,正因如此,列表中元素的順序很重要,有些時候我們需要翻轉列表中所有元素的順序,可以通過Python中的切片操作,用::-1來快捷地實現:
圖6
5 檢查列表中元素的存在情況
有些情況下我們想要檢查列表中是否存在某個元素,這種時候就可以使用到Python中的in運算符,譬如說我們有一個記錄了所有比賽獲勝隊伍名稱的列表,當我們想查詢某個隊名是否已獲勝時,可以像下面的例子一樣:
圖7
6 找出列表中出現次數最多的元素
有些情況下我們想要找出列表中出現次數最多的元素,譬如對記錄若干次拋硬幣結果的列表,找出哪一種結果出現次數最多,就可以參考下面的例子:
圖8
7 展平嵌套列表
有些情況下我們會遇到一些嵌套的列表,其每個元素又是各自不同的列表,這種時候我們就可以利用列表推導式來把這種嵌套列表展平,如下面2層嵌套的例子:
圖9
額外補充:
原作者這裏只考慮到兩層嵌套的列表,如果是更多層嵌套,就需要有多少層寫多少for循環,比較麻煩,其實還有一種更好的方法,我們可以使用
pip install dm-tree來安裝tree這個專門用於展平嵌套結構的庫,可以展平任意層嵌套列表,使用例子如下:
圖10
8 檢查唯一性
如果你想要查看列表中的值是否都是唯一值,可以使用Python中的set數據結構的特點,譬如下面的例子:
圖11
以上就是本文的全部內容,如有疑問歡迎在評論區討論~
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!
※網頁設計公司推薦不同的風格,搶佔消費者視覺第一線
※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整
※南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!
※教你寫出一流的銷售文案?
※超省錢租車方案


據美國《Forbes》雜誌報導,今年上半年美國新車整體銷量接近 1700 萬輛,電動車、混動車以及插電式混合動力車銷量也呈同比遞增趨勢,達到了 5.4 萬輛,相較 2013 年環保車型在美同期銷量為4.1萬輛,同比提高 33%。 分析師預測,今年下半年電動車銷量將會更好,因為 2013 年將近 60% 的增幅都是在下半年實現的。 今年美國電動車市場的領先車型為日產聆風,銷量達 1.27 萬輛,超越了上一任冠軍雪佛蘭沃藍達插電式混動車。第二名為豐田普銳斯混動車,銷量 9300 輛。雪佛蘭沃藍達銷量則降至8600輛,特斯拉Model S的銷量為 7400 輛。 市場預測,如果 33% 的增長可以繼續保持,美國電動車銷量將在 2020 年前突破 50 萬輛。 (圖片來源:)