跟老齊學Python之有容乃大的list(2)

來源:互聯網
上載者:User
對list的操作

合并list

《有容乃大的list(1)》中,對list的操作提到了list.append(x),也就是將某個元素x 追加到已知的一個list後邊。

除了將元素追加到list中,還能夠將兩個list合并,或者說將一個list追加到另外一個list中。按照前文的慣例,還是首先看官方文檔中的描述:

list.extend(L)
Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L.
向所有正在學習本內容的朋友提供一個成為優秀程式員的必備:看官方文檔,是必須的。

官方文檔的這句話翻譯過來:

通過將所有元素追加到已知list來擴充它,相當於a[len(a)]= L
英語太爛,翻譯太差。直接看例子,更明白

>>> la[1, 2, 3]>>> lb['qiwsir', 'python']>>> la.extend(lb)>>> la[1, 2, 3, 'qiwsir', 'python']>>> lb['qiwsir', 'python']

上面的例子,顯示了如何將兩個list,一個是la,另外一個lb,將lb追加到la的後面,也就是把lb中的所有元素加入到la中,即讓la擴容。

學程式一定要有好奇心,我在互動環境中,經常實驗一下自己的想法,有時候是比較愚蠢的想法。

>>> 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 "", line 1, in TypeError: 'int' object is not iterable

從上面的實驗中,看官能夠有什麼心得?原來,如果extend(str)的時候,str被以字元為單位拆開,然後追加到la裡面。

如果extend的對象是數值型,則報錯。

所以,extend的對象是一個list,如果是str,則python會先把它按照字元為單位轉化為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上面呢?效果如何?

做實驗:

>>> name = 'qiwsir'>>> type(name)>>> len(name)6>>> lname = ['sir','qi']>>> type(lname)>>> len(lname)2>>> length = len(lname)>>> length2>>> type(length)

實驗結論:

len(x),對於list一樣適用
得到的是list中元素個數
傳回值是int類型
list中某元素的個數

上面的len(L),可得到list的長度,也就是list中有多少個元素。python的list還有一個操作,就是數一數某個元素在該list中出現多少次,也就是某個元素有多少個。官方文檔是這麼說的:

list.count(x)
Return the number of times x appears in the list.
一定要不斷實驗,才能理解文檔中精鍊的表達。

>>> 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,但是如果用這種方法找,不報錯,返回的是數字00

元素在list中的位置

《有容乃大的list(1)》中已經提到,可以將list中的元素,從左向右依次從0開始編號,建立索引(如果從右向左,就從-1開始依次編號),通過索引能夠提取出某個元素,或者某幾個元素。就是如這樣做:

>>> 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']

如果考慮反過來的情況,能不能通過某個元素,找到它在list中的編號呢?

看官的需要就是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')   #如果不存在,就報錯Traceback (most recent call last): File "", line 1, in  ValueError: 'qi' is not in list>>> la.index('qiwsir')6

list.index(x),x是list中的一個元素,這樣就能夠檢索到該元素在list中的位置了。這才是真正的索引,注意那個英文單詞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.
是不是說的非常清楚明白了?

先到這裡,下講還繼續有容乃大的list.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.