通過10個例子快速掌握Python中的List
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
List是Python中的內(nèi)置數(shù)據(jù)結(jié)構(gòu),可用于存儲任何數(shù)據(jù)類型或不同數(shù)據(jù)類型的混合。在本文中,我們將通過10個例子來介紹python中的list。
讓我們開始吧!
import numpy as npa = [4,6,7,3,2]b = [x for x in a if x > 5]b[]
我們遍歷一個列表(可迭代對象)并獲取大于5的元素(條件)。
等效的for循環(huán)是:
b = []for x in a:if x > 5:b.append(x)b[]
我們也可以在元素放入新列表之前對其進(jìn)行某些處理:
import numpy as npa = [4,6,7,3,2]b = [x*2 for x in a if x > 5]b[]
我們將符合條件的項(xiàng)目乘以2,然后放入一個列表。
第三個例子是字符串列表:
#example 3names = ['Ch','Dh','Eh','cb','Tb','Td']new_names = [name for name in names if name.lower().startswith('c')]new_names['Ch', 'cb']
這次的條件是獲取字符串中以”c”為開頭的元素。因?yàn)橛写笮懼?,所以我們首先將所有字母轉(zhuǎn)換為小寫。
可迭代對象不一定是一個列表,例如我們可以迭代實(shí)際上是矩陣的二維Numpy數(shù)組。
import numpy as npA = np.random.randint(10, size=(4,4))Aarray([[1, 7, 4, 4],[5, 0, 0, 6],[7, 5, 8, 4],[1, 3, 2, 2]])max_element = [max(i) for i in A]max_element[]
我們迭代矩陣A中的每一行并取最大值。
列表可以存儲任何數(shù)據(jù)類型。
#example 5vals = [[1,2,3],[4,5,2],[3,2,6]]vals_max = [max(x) for x in vals]vals_max[3, 5, 6]
我們在每個列表中創(chuàng)建一個最大值列表。
篩選條件也可以有多個。
#example 6names = ['Ch','Dh','Eh','cb','Tb','Td','Chb','Tdb']new_names = [name for name in names ifname.lower().endswith('b') and len(name) > 2]new_names['Chb', 'Tdb']
上面是得到字符串以字母”b”結(jié)尾且長度大于2.
我們可以將多個條件與其他邏輯運(yùn)算符結(jié)合起來:
#example 7names = ['chb', 'ydb', 'thd', 'hgh']new_names = [name for name in namesif name.endswith('b') | name.startswith('c')]new_names['chb', 'ydb']
現(xiàn)在我們考慮下面這個嵌套列表:
vals = [[1,2,3],[4,5,2],[3,2,6]]我們希望從嵌套列表中取出每個元素,所以期望的輸出是:
vals = [1,2,3,4,5,2,3,2,6]可以通過如下方式實(shí)現(xiàn):
vals = [[1,2,3],[4,5,2],[3,2,6]]vals_exp = [y for x in vals for y in x]vals_exp[]
語法可能看起來不是很直觀,與等價(jià)的for循環(huán)相對比,它就會很直觀。

對于上面的嵌套列表操作,我們也可以添加條件。
text = [['bar','foo','fooba'],['Rome','Madrid','Houston'], ['aa','bb','cc','dd']]我們只需要長度大于3的嵌套列表中的字符串。
#example 9text_1 = [y for x in text if len(x)>3 for y in x]text_1['aa', 'bb', 'cc', 'dd']
我們將條件放在嵌套列表上,而不是放在單個元素上。因此,等價(jià)的for/if循環(huán)語法如下所示。

我們也可以對單個元素設(shè)置一個條件。
#example 10text_2 = [y for x in text for y in x if len(y)>4]text_2['fooba', 'Madrid', 'Houston']
我們現(xiàn)在有長于4個字符的字符串。因?yàn)闂l件是在單個元素上,所以等價(jià)的嵌套for/if循環(huán):

掌握這10個例子將會讓我們對list的理解更上一層樓。
好消息!
小白學(xué)視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。 下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺」公眾號后臺回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺」公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個基于OpenCV實(shí)現(xiàn)20個實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

