python tuple类型和list_Python 04_List 和 Tuple 类型
01 Python 創建list
Python 內置的一種數據結構類型是列表:list !list 是一種有序的集合,可以隨時添加和刪除其中的元素。是數學意義上的有序集合, 也就是說,list 中的元素是按照順序排列的。
構造 list ,直接用 [ ] 把 list 所有的元素包括起來,就是一個 list 對象。 通常情況下,會把 list 賦值給一個變量,這樣就可以通過變量來引用 list。
由于 Python 是動態語言, 所以 list 中包含的元素并不要求都必須是同一種數據類型,完全可以在 list 中包含各種數據類型:
A = ['one', 100, True]
一個元素也沒有的 list , 就是空 list。
小練習:假設班里有3名同學:Adam,Lisa和Bart,他們的成績分別是 95.5,85 和 59,請按照 名字, 分數, 名字, 分數... 的順序按照分數從高到低用一個list表示,然后打印出來。
>>>L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
>>>print L
02 Python 按照索引訪問 list
list 是一個有序的集合,那么我們就可以用一個 list 按分數從高到低表示出班里的同學:
L = ['Adam', 'Lisa', 'Bart']
從 list 中獲取 N 位同學就是通過索引來獲取 list 中的指定元素。但是一定不能越界! 這點跟 C 的數組類似。 沒學過 C 的就先自己體會吧。
03 Python 之倒序訪問 list
還是以上面的班級的 3 個同學為例:
L = ['Adam', 'Lisa', 'Bart']
如果要獲取最后一位同學,那么是不是要知道 list 中有多少元素,3 個元素,那么就是 L[2] , 如果我們使用倒序,則可以這樣 L[-1] 表示倒數第一個, L[-2] 表示倒數第二個。
>>>print L[-1]
Bart
當然, 這樣使用的時候, 也不能越界!
04 Python 之添加新元素
如果這個時候, 有一位新同學轉到班上來,那么該怎樣把新同學添加到現在的 list 中呢?
方法一: 就是使用 list 的 append() 方法,把新同學添加到 list 的末尾。 記住 append() 是添加到末尾。
>>>L = ['Adam', 'Lisa', 'Bart']
>>>L.append('Paul')
>>>print L
['Adam', 'Lisa', 'Bart', 'Paul']
方法二: 就是 list 中 insert() 方法,它接受兩個參數,第一個參數是索引號,第二個參數是待添加的新元素:
>>>L = ['Adam', 'Lisa', 'Bart']
>>>L.insert(0, 'Paul')
>>>print L
['Adam', 'Lisa', 'Bart', 'Paul']
這樣就可以將 Paul 添加到索引為 0 的位置了。
05 Python 從 list 中刪除元素
現在說是 Paul 轉來班上, 那么 Paul 如果后來又要轉走, 那么怎么從現在的 list 中刪除呢?
如果 Paul 在最后一個, 那么可以用 list 的 pop() 方法刪除:
>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>>L.pop()
'Paul'
>>>print L
['Adam', 'Lisa', 'Bart']
從而得知, pop() 方法總是刪掉 list 的最后一個元素,而且還會返回這個元素,所以在執行 L.pop() 之后會打印出 'Paul'。那么不在最后一個位置應該怎么破呢?
例如我們要刪除 'Lisa'
>>>L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>>L.pop(1)
'Lisa'
>>>print L
['Adam','Bart', 'Paul']
把索引值填入 pop() 的參數中就可以了。
練習題:注意下面的編輯器代碼中 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 包含的元素個數不變。
使用倒序替換掉也行:
>>> L[-1] = 'Paul'
07 Python 之創建 tuple
tuple 是另一種有序的列表, 中文翻譯為 “元組”。 tuple 和 list 非常相似, 但是 tuple 一但建立完成, 就不能修改了。使用 tuple 創建:
>>>T = ('Adam', 'Lisa', 'Paul')
創建 tuple 和創建 list 唯一不同之處是用 () 代替了 [ ] 。那么現在這個 T 就不能改變了, tuple 沒有 append() 方法, 也沒有 pop() 和 insert() 方法。
獲取 tuple 元素的方式和 list 是一模一樣的,我們可以正常使用 T[0],T[-1]等索引方式訪問元素,但是不能賦值成別的元素。
08 Python 之創建單元素 tuple
tuple 和 list 一樣,可以包含 0 個、1個、任意多個元素。 0 個元素的 tuple , 也就是空 tuple, 直接用 () 表示:
>>> t = ()
>>> print t
()
包含一個元素的:
>>> t = (1)
>>> print t
1
結果是 1 , 而不是 () ;因為在 Python 中, () 既可以表示 tuple, 又可以作為括號表示運算時的優先級,結果 (1) 被 Python 解釋器計算出結果為 1 。
正因為這樣的歧義, 所以 Python 規定, 單元素 tuple 要多加一個逗號 “,”,這樣就避免的歧義:
>>> t = (1,)
>>> print t
(1,)
Python在打印單元素tuple時,也自動添加了一個“,”,為了說明這是一個tuple。
多元素 tuple 加不加這個元素,效果都是一樣的。
09 Python 之 “可變” 的 tuple
前面說到了創建了 tuple 就不能修改,那么現在看看 “可變” 的 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
總結
以上是生活随笔為你收集整理的python tuple类型和list_Python 04_List 和 Tuple 类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql安装 经验_MySQL安装教程
- 下一篇: mysql hostname uroot