Python基礎教程-List和Tuple

來源:互聯網
上載者:User

標籤:shell   引號   注意   列表   數學   長度   不能   mod   情況   

List

Python內建的一種資料類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。

比如:

>>> classmates = [‘Michael‘,‘Bob‘,‘Tracy‘]
>>> classmates
[‘Michael‘, ‘Bob‘, ‘Tracy‘]
>>> len(classmates)
3

用索引來訪問list中的每一個位置的元素,索引從0開始:

>>> classmates[0]‘Michael‘>>> classmates[3]Traceback (most recent call last):  File "<pyshell#4>", line 1, in <module>    classmates[3]IndexError: list index out of range>>> 

如果要取得最後一個元素,除了計算索引位置外,還可以用-1做索引,用-1做索引直接取得list的最後一個元素:

>>> classmates[-1]‘Tracy‘>>> 

以此類推,可以擷取倒數第2個,倒數第3個:

>>> classmates[-2]‘Bob‘>>> classmates[-3]‘Michael‘>>> classmates[-4]Traceback (most recent call last):  File "<pyshell#10>", line 1, in <module>    classmates[-4]IndexError: list index out of range>>> 

list是一個可變的有序表,所以可以向list中追加元素到末尾:

>>> classmates.append("A")>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘A‘]

也可以把元素插入到指定的位置,比如索引號為1的位置:

>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘A‘]>>> classmates.insert(1,"B")>>> classmates[‘Michael‘, ‘B‘, ‘Bob‘, ‘Tracy‘, ‘A‘]

要刪除list末尾的元素,用pop(i)的方法,其中i是索引的位置:

>>> classmates[‘Michael‘, ‘B‘, ‘Bob‘, ‘Tracy‘, ‘A‘]>>> classmates.pop(1)‘B‘>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘A‘]

要把某個元素替換成別的元素,可以直接賦值給對應的索引位置:

>>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘A‘]>>> classmates[3] = "Sarah">>> classmates[‘Michael‘, ‘Bob‘, ‘Tracy‘, ‘Sarah‘]

list裡面的元素的資料類型也可以不相同,比如:

>>> L = [‘A‘,45,True,3.45]>>> L[‘A‘, 45, True, 3.45]

list的元素也可以包含另一個list,比如:

>>> M = [‘D‘,L]>>> M[‘D‘, [‘A‘, 45, True, 3.45]]

要注意M只有兩個元素,M[1]又是一個list:

>>> len(M)2>>> len(M[1])4

如果一個list中一個元素也沒有,就是一個空的list,它的長度為0:

>>> N = []>>> len(N)0
Tuple

Python中另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改:

>>> classmates = (‘A‘,‘B‘,‘C‘)>>> classmates(‘A‘, ‘B‘, ‘C‘)

現在,classmates這個tuple不能變了,它也沒有append(),insert()這樣的方法。其他擷取元素的方法和list是一樣的,也可以使用classmates[0],classmates[-1],但是不能賦值成另外的元素。

那麼,不可變的tuple有什麼意義?因為tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量使用tuple。

tuple的陷阱:當你定義一個tuple時,在定義的時候,tuple的元素就必須被確定下來,比如:

>>> t = (1,2)>>> t(1, 2)

如果要定義一個空的tuple,可以寫成():

>>> t = ()>>> t()

但是,要定義一個只有1個元素的tuple,如果你像如下這麼定義:

>>> t = (1)>>> t1

那麼你定義的就不是一個tuple,是1這個數,因為括弧()既可以表示tuple,又可以表示數學公式中的小括弧。

這就產生了歧義,因此Python規定,這種情況下,按小括弧計算。

所以,只有一個元素的tuple定義時必須加上一個逗號“,”,來消除歧義:

>>> t = (1,)>>> t(1,)

Python在顯示只有一個元素的tuple時,也會加上一個逗號“,”,以免你誤解成數學計算意義上的括弧。

“可變的”tuple:

>>> t = (‘a‘,‘b‘,[‘A‘,‘B‘])>>> t(‘a‘, ‘b‘, [‘A‘, ‘B‘])>>> t[2][0] = ‘X‘>>> t[2][1] = ‘Y‘>>> t(‘a‘, ‘b‘, [‘X‘, ‘Y‘])

這個tuple定義的時候有三個元素,表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的不變是說,tuple的每個元素指向永遠不變,如指向一個list,就不能改成指向其他對象,但是這個list本事是可變的。

總結

list和tuple是Python內建的有序集合,前者可變,後者不可變。

Python基礎教程-List和Tuple

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.