Python 04_List 和 Tuple 類型

01 Python 創(chuàng)建list

Python 內置的一種數(shù)據結構類型是列表:list !list 是一種有序的集合,可以隨時添加和刪除其中的元素。是數(shù)學意義上的有序集合, 也就是說,list 中的元素是按照順序排列的。
構造 list ,直接用 [ ] 把 list 所有的元素包括起來,就是一個 list 對象。 通常情況下,會把 list 賦值給一個變量,這樣就可以通過變量來引用 list。
由于 Python 是動態(tài)語言, 所以 list 中包含的元素并不要求都必須是同一種數(shù)據類型,完全可以在 list 中包含各種數(shù)據類型:

A = ['one', 100, True]

一個元素也沒有的 list , 就是空 list。
小練習:假設班里有3名同學:Adam,Lisa和Bart,他們的成績分別是 95.5,85 和 59,請按照 名字, 分數(shù), 名字, 分數(shù)... 的順序按照分數(shù)從高到低用一個list表示,然后打印出來。

>>>L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
>>>print L

02 Python 按照索引訪問 list

list 是一個有序的集合,那么我們就可以用一個 list 按分數(shù)從高到低表示出班里的同學:

L = ['Adam', 'Lisa', 'Bart']

從 list 中獲取 N 位同學就是通過索引來獲取 list 中的指定元素。但是一定不能越界! 這點跟 C 的數(shù)組類似。 沒學過 C 的就先自己體會吧。

03 Python 之倒序訪問 list

還是以上面的班級的 3 個同學為例:

L = ['Adam', 'Lisa', 'Bart']

如果要獲取最后一位同學,那么是不是要知道 list 中有多少元素,3 個元素,那么就是 L[2] , 如果我們使用倒序,則可以這樣 L[-1] 表示倒數(shù)第一個, L[-2] 表示倒數(shù)第二個。

>>>print L[-1]
Bart

當然, 這樣使用的時候, 也不能越界!

04 Python 之添加新元素

如果這個時候, 有一位新同學轉到班上來,那么該怎樣把新同學添加到現(xiàn)在的 list 中呢?
方法一: 就是使用 list 的 append() 方法,把新同學添加到 list 的末尾。 記住 append() 是添加到末尾。

>>>L = ['Adam', 'Lisa', 'Bart']
>>>L.append('Paul')
>>>print L
['Adam', 'Lisa', 'Bart', 'Paul']

方法二: 就是 list 中 insert() 方法,它接受兩個參數(shù),第一個參數(shù)是索引號,第二個參數(shù)是待添加的新元素:

>>>L = ['Adam', 'Lisa', 'Bart']
>>>L.insert(0, 'Paul')
>>>print L
['Adam', 'Lisa', 'Bart', 'Paul']

這樣就可以將 Paul 添加到索引為 0 的位置了。

05 Python 從 list 中刪除元素

現(xiàn)在說是 Paul 轉來班上, 那么 Paul 如果后來又要轉走, 那么怎么從現(xiàn)在的 list 中刪除呢?
如果 Paul 在最后一個, 那么可以用 list 的 pop() 方法刪除:

>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>>L.pop()
'Paul'
>>>print L
['Adam', 'Lisa', 'Bart']

從而得知, pop() 方法總是刪掉 list 的最后一個元素,而且還會返回這個元素,所以在執(zhí)行 L.pop() 之后會打印出 'Paul'。那么不在最后一個位置應該怎么破呢?
例如我們要刪除 'Lisa'

>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>>L.pop(1)
'Lisa'
>>>print L
['Adam','Bart', 'Paul']

把索引值填入 pop() 的參數(shù)中就可以了。
練習題:注意下面的編輯器代碼中 list 如下:
L = ['Adam', 'Lisa', 'Paul', 'Bart']
Paul的索引是2,Bart的索引是3,如果我們要把Paul和Bart都刪掉,請解釋下面的代碼為什么不能正確運行:
L.pop(2)
L.pop(3)
怎樣調整代碼可以把Paul和Bart都正確刪除掉?

L = ['Adam', 'Lisa', 'Paul', 'Bart']
L.pop(2)
L.pop(3)
print L

06 Python 中替換元素

如果,Bart同學要轉學走了,碰巧來了一個Paul同學,要更新班級成員名單,我們可以先把Bart刪掉,再把Paul添加進來。
還可以直接用 Paul 將 Bart 換掉:

>>> L[2] = 'Paul'
>>> print L
L = ['Adam', 'Lisa', 'Paul']

對 list 中的某一個索引值, 就可以直接用新的元素替換原來的元素, list 包含的元素個數(shù)不變。
使用倒序替換掉也行:

>>> L[-1] = 'Paul'

07 Python 之創(chuàng)建 tuple

tuple 是另一種有序的列表, 中文翻譯為 “元組”。 tuple 和 list 非常相似, 但是 tuple 一但建立完成, 就不能修改了。使用 tuple 創(chuàng)建:

>>>T = ('Adam', 'Lisa', 'Paul')

創(chuàng)建 tuple 和創(chuàng)建 list 唯一不同之處是用 () 代替了 [ ] 。那么現(xiàn)在這個 T 就不能改變了, tuple 沒有 append() 方法, 也沒有 pop() 和 insert() 方法。

獲取 tuple 元素的方式和 list 是一模一樣的,我們可以正常使用 T[0],T[-1]等索引方式訪問元素,但是不能賦值成別的元素。

08 Python 之創(chuàng)建單元素 tuple

tuple 和 list 一樣,可以包含 0 個、1個、任意多個元素。 0 個元素的 tuple , 也就是空 tuple, 直接用 () 表示:

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

包含一個元素的:

>>> t = (1)
>>> print t
1

結果是 1 , 而不是 () ;因為在 Python 中, () 既可以表示 tuple, 又可以作為括號表示運算時的優(yōu)先級,結果 (1) 被 Python 解釋器計算出結果為 1 。
正因為這樣的歧義, 所以 Python 規(guī)定, 單元素 tuple 要多加一個逗號 “,”,這樣就避免的歧義:

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

Python在打印單元素tuple時,也自動添加了一個“,”,為了說明這是一個tuple。
多元素 tuple 加不加這個元素,效果都是一樣的。

09 Python 之 “可變” 的 tuple

前面說到了創(chuàng)建了 tuple 就不能修改,那么現(xiàn)在看看 “可變” 的 tuple:

>>> t = ('a', 'b', ['A', 'B'])

然后我們通過 t[2] 拿到 tuple 中的 list 對象:

>>> L = t[2]

然后修改一下 list 中的兩個元素:

>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])

結果是變了、為什么變?
其實改變的不是 tuple ,而是 list 的元素。
tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
練習:
定義了tuple:
t = ('a', 'b', ['A', 'B'])
由于 t 包含一個list元素,導致tuple的內容是可變的。能否修改上述代碼,讓tuple內容不可變?

t = ('a', 'b', ('A', 'B'))
print t
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、python 變量和數(shù)據類型 1.整數(shù) Python可以處理任意大小的整數(shù),當然包括負整數(shù),在Python程序...
    績重KF閱讀 2,016評論 0 1
  • Python最常用的兩種集合類型:list和tuple,我們可以用list和tuple來表示有序集合。 1.Pyt...
    ChinaGoodStaff閱讀 1,101評論 0 3
  • 最近在慕課網學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,940評論 0 5
  • 教程地址:python入門 - 慕課網 安裝python 執(zhí)行腳本 python官網 安裝程序,并將python....
    竹口小生閱讀 579評論 0 0
  • List Python內置的一種數(shù)據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。...
    _王子_閱讀 739評論 0 1

友情鏈接更多精彩內容