python tuple类型和list_Python 04_List 和 Tuple 类型
01 Python 創(chuàng)建list
Python 內(nèi)置的一種數(shù)據(jù)結(jié)構(gòu)類型是列表:list !list 是一種有序的集合,可以隨時添加和刪除其中的元素。是數(shù)學(xué)意義上的有序集合, 也就是說,list 中的元素是按照順序排列的。
構(gòu)造 list ,直接用 [ ] 把 list 所有的元素包括起來,就是一個 list 對象。 通常情況下,會把 list 賦值給一個變量,這樣就可以通過變量來引用 list。
由于 Python 是動態(tài)語言, 所以 list 中包含的元素并不要求都必須是同一種數(shù)據(jù)類型,完全可以在 list 中包含各種數(shù)據(jù)類型:
A = ['one', 100, True]
一個元素也沒有的 list , 就是空 list。
小練習(xí):假設(shè)班里有3名同學(xué):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ù)從高到低表示出班里的同學(xué):
L = ['Adam', 'Lisa', 'Bart']
從 list 中獲取 N 位同學(xué)就是通過索引來獲取 list 中的指定元素。但是一定不能越界! 這點跟 C 的數(shù)組類似。 沒學(xué)過 C 的就先自己體會吧。
03 Python 之倒序訪問 list
還是以上面的班級的 3 個同學(xué)為例:
L = ['Adam', 'Lisa', 'Bart']
如果要獲取最后一位同學(xué),那么是不是要知道 list 中有多少元素,3 個元素,那么就是 L[2] , 如果我們使用倒序,則可以這樣 L[-1] 表示倒數(shù)第一個, L[-2] 表示倒數(shù)第二個。
>>>print L[-1]
Bart
當(dāng)然, 這樣使用的時候, 也不能越界!
04 Python 之添加新元素
如果這個時候, 有一位新同學(xué)轉(zhuǎn)到班上來,那么該怎樣把新同學(xué)添加到現(xiàn)在的 list 中呢?
方法一: 就是使用 list 的 append() 方法,把新同學(xué)添加到 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 轉(zhuǎn)來班上, 那么 Paul 如果后來又要轉(zhuǎn)走, 那么怎么從現(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'。那么不在最后一個位置應(yīng)該怎么破呢?
例如我們要刪除 'Lisa'
>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>>L.pop(1)
'Lisa'
>>>print L
['Adam','Bart', 'Paul']
把索引值填入 pop() 的參數(shù)中就可以了。
練習(xí)題:注意下面的編輯器代碼中 list 如下:
L = ['Adam', 'Lisa', 'Paul', 'Bart']
Paul的索引是2,Bart的索引是3,如果我們要把Paul和Bart都刪掉,請解釋下面的代碼為什么不能正確運行:
L.pop(2)
L.pop(3)
怎樣調(diào)整代碼可以把Paul和Bart都正確刪除掉?
L = ['Adam', 'Lisa', 'Paul', 'Bart']
L.pop(2)
L.pop(3)
print L
06 Python 中替換元素
如果,Bart同學(xué)要轉(zhuǎn)學(xué)走了,碰巧來了一個Paul同學(xué),要更新班級成員名單,我們可以先把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
結(jié)果是 1 , 而不是 () ;因為在 Python 中, () 既可以表示 tuple, 又可以作為括號表示運算時的優(yōu)先級,結(jié)果 (1) 被 Python 解釋器計算出結(jié)果為 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'])
結(jié)果是變了、為什么變?
其實改變的不是 tuple ,而是 list 的元素。
tuple一開始指向的list并沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向'a',就不能改成指向'b',指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
練習(xí):
定義了tuple:
t = ('a', 'b', ['A', 'B'])
由于 t 包含一個list元素,導(dǎo)致tuple的內(nèi)容是可變的。能否修改上述代碼,讓tuple內(nèi)容不可變?
t = ('a', 'b', ('A', 'B'))
print t
總結(jié)
以上是生活随笔為你收集整理的python tuple类型和list_Python 04_List 和 Tuple 类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql安装 经验_MySQL安装教程
- 下一篇: python fun_一道神奇的Pyth