跟老齊學(xué)Python之有容乃大的list(2)
對(duì)list的操作
合并list
《有容乃大的list(1)》中,對(duì)list的操作提到了list.append(x),也就是將某個(gè)元素x 追加到已知的一個(gè)list后邊。
除了將元素追加到list中,還能夠?qū)蓚€(gè)list合并,或者說將一個(gè)list追加到另外一個(gè)list中。按照前文的慣例,還是首先看官方文檔中的描述:
list.extend(L)
Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.
向所有正在學(xué)習(xí)本內(nèi)容的朋友提供一個(gè)成為優(yōu)秀程序員的必備:看官方文檔,是必須的。
官方文檔的這句話翻譯過來:
通過將所有元素追加到已知list來擴(kuò)充它,相當(dāng)于a[len(a)]= L
英語太爛,翻譯太差。直接看例子,更明白
>>> la [1, 2, 3] >>> lb ['qiwsir', 'python'] >>> la.extend(lb) >>> la [1, 2, 3, 'qiwsir', 'python'] >>> lb ['qiwsir', 'python']
上面的例子,顯示了如何將兩個(gè)list,一個(gè)是la,另外一個(gè)lb,將lb追加到la的后面,也就是把lb中的所有元素加入到la中,即讓la擴(kuò)容。
學(xué)程序一定要有好奇心,我在交互環(huán)境中,經(jīng)常實(shí)驗(yàn)一下自己的想法,有時(shí)候是比較愚蠢的想法。
>>> la = [1,2,3] >>> b = "abc" >>> la.extend(b) >>> la [1, 2, 3, 'a', 'b', 'c'] >>> c = 5 >>> la.extend(c) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not iterable
從上面的實(shí)驗(yàn)中,看官能夠有什么心得?原來,如果extend(str)的時(shí)候,str被以字符為單位拆開,然后追加到la里面。
如果extend的對(duì)象是數(shù)值型,則報(bào)錯(cuò)。
所以,extend的對(duì)象是一個(gè)list,如果是str,則python會(huì)先把它按照字符為單位轉(zhuǎn)化為list再追加到已知list。
不過,別忘記了前面官方文檔的后半句話,它的意思是:
>>> la [1, 2, 3, 'a', 'b', 'c'] >>> lb ['qiwsir', 'python'] >>> la[len(la):]=lb >>> la [1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python']
list.extend(L) 等效于 list[len(list):] = L,L是待并入的list
list的長度
還記得str的長度怎么獲得嗎?其長度是什么含呢?那種方法能不能用在list上面呢?效果如何?
做實(shí)驗(yàn):
>>> name = 'qiwsir' >>> type(name) <type 'str'> >>> len(name) 6 >>> lname = ['sir','qi'] >>> type(lname) <type 'list'> >>> len(lname) 2 >>> length = len(lname) >>> length 2 >>> type(length) <type 'int'>
實(shí)驗(yàn)結(jié)論:
len(x),對(duì)于list一樣適用
得到的是list中元素個(gè)數(shù)
返回值是int類型
list中某元素的個(gè)數(shù)
上面的len(L),可得到list的長度,也就是list中有多少個(gè)元素。python的list還有一個(gè)操作,就是數(shù)一數(shù)某個(gè)元素在該list中出現(xiàn)多少次,也就是某個(gè)元素有多少個(gè)。官方文檔是這么說的:
list.count(x)
Return the number of times x appears in the list.
一定要不斷實(shí)驗(yàn),才能理解文檔中精煉的表達(dá)。
>>> la = [1,2,1,1,3]
>>> la.count(1)
3
>>> la.append('a')
>>> la.append('a')
>>> la
[1, 2, 1, 1, 3, 'a', 'a']
>>> la.count('a')
2
>>> la.count(2)
1
>>> la.count(5) #NOTE:la中沒有5,但是如果用這種方法找,不報(bào)錯(cuò),返回的是數(shù)字0
0
元素在list中的位置
《有容乃大的list(1)》中已經(jīng)提到,可以將list中的元素,從左向右依次從0開始編號(hào),建立索引(如果從右向左,就從-1開始依次編號(hào)),通過索引能夠提取出某個(gè)元素,或者某幾個(gè)元素。就是如這樣做:
>>> la [1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python'] >>> la[2] 3 >>> la[2:5] [3, 'a', 'b'] >>> la[:7] [1, 2, 3, 'a', 'b', 'c', 'qiwsir']
如果考慮反過來的情況,能不能通過某個(gè)元素,找到它在list中的編號(hào)呢?
看官的需要就是python的方向,你想到,python就做到。
>>> la
[1, 2, 3, 'a', 'b', 'c', 'qiwsir', 'python']
>>> la.index(3)
2
>>> la.index('a')
3
>>> la.index(1)
0
>>> la.index('qi') #如果不存在,就報(bào)錯(cuò)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'qi' is not in list
>>> la.index('qiwsir')
6
list.index(x),x是list中的一個(gè)元素,這樣就能夠檢索到該元素在list中的位置了。這才是真正的索引,注意那個(gè)英文單詞index。
依然是上一條官方解釋:
list.index(x)
Return the index in the list of the first item whose value is x. It is an error if there is no such item.
是不是說的非常清楚明白了?
先到這里,下講還繼續(xù)有容乃大的list.
相關(guān)文章
超詳細(xì)注釋之OpenCV實(shí)現(xiàn)視頻實(shí)時(shí)人臉模糊和人臉馬賽克
這篇文章主要介紹了OpenCV實(shí)現(xiàn)視頻實(shí)時(shí)人臉模糊和人臉馬賽克,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Python 繪制北上廣深的地鐵路線動(dòng)態(tài)圖
這篇文章主要介紹了用python制作北上廣深——地鐵線路動(dòng)態(tài)圖,文中的示例代碼講解詳細(xì),對(duì)我們的工作或?qū)W習(xí)都有一定的價(jià)值,感興趣的同學(xué)可以學(xué)習(xí)一下2021-12-12
對(duì)python打亂數(shù)據(jù)集中X,y標(biāo)簽對(duì)的方法詳解
今天就為大家分享一篇對(duì)python打亂數(shù)據(jù)集中X,y標(biāo)簽對(duì)的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式
這篇文章主要介紹了python線程池ThreadPoolExecutor,傳單個(gè)參數(shù)和多個(gè)參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
python+pyqt5實(shí)現(xiàn)圖片批量縮放工具
這篇文章主要為大家詳細(xì)介紹了Python+pyqt5實(shí)現(xiàn)圖片批量縮放工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
Python實(shí)現(xiàn)矩陣加法和乘法的方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)矩陣加法和乘法的方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)矩陣的加法與乘法運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
Python編程學(xué)習(xí)之如何判斷3個(gè)數(shù)的大小
這篇文章主要給大家介紹了關(guān)于Python編程學(xué)習(xí)之如何判斷3個(gè)數(shù)的大小的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文)
這篇文章主要介紹了Python3 venv搭建輕量級(jí)虛擬環(huán)境的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

