一、list
Python內置的一種數據類型是列表:
list
list是一種
有序的
、
可變的
集合,可以隨時添加和刪除其中的元素。
實例:
列表:classmates
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
- len()函數獲取list元素的個數
>>> len(classmates)
3
- 用索引來訪問list中每一個位置的元素:
索引從0開始,最后一個元素的索引是 len(classmates) ‐ 1 。
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
如果要取最后一個元素,除了計算索引位置外,還可以用 ‐1 做索引,直接獲取最后一個元素
>>> classmates[-1]
'Tracy
- list中追加元素到末尾
>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
- 把元素插入到指定的位置
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
- 刪除指定位置的元素:
>>> classmates.pop() ##刪除list末尾的元素
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
>>> classmates.pop(1) ##刪除指定位置的元素,其中 i 是索引位置:
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']
- 把某個元素替換成別的元素,可以直接賦值給對應的索引位置:
>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']
- list里面的元素的數據類型可以不同
>>> L = ['Apple', 123, True]
- list元素也可以是另一個list
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> s[2][1]
‘php’
- 如果一個list中一個元素也沒有,就是一個空的list,它的長度為0:
>>> L = []
>>> len(L)
0
二、tuple
tuple和list非常類似,但是tuple和list相比有一個很重要的區別,元組是一種
不可變型
,即元組一旦初始化就不能修改。
因為tuple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。
實例:
元組:classmates
>>> classmates = ('Michael', 'Bob', 'Tracy')
元組classmates是不可變型,沒有append(),insert()方法。
其他獲取元素的方法和list是一樣的,可正常地使用 classmates[0] , classmates[‐1] ,但不能賦值成另外的元素。
- tuple的陷阱:在定義tuple時,tuple的元素就必須被確定下來
>>> t = (1, 2)
>>> t
(1, 2)
- 定義一個空的tuple
>>> t = ()
>>> t
()
- 定義一個只有1個元素的tuple
定義只有1個元素的tuple時必須加一個逗號 , ,來消除歧義:
>>> t = (1,)
>>> t
(1,)
- “可變的”tuple
tuple所謂的“不變”是說,tuple的每個元素的指向永遠不變。即指向 ‘a’ ,就不能改成指向 ‘b’ ,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的!
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
三、小結
list和tuple是Python內置的有序集合,一個可變,一個不可變,根據需要來選擇使用它們的使用場景。幸運的是,你可以通過內建的list()和tuple()轉換函數,輕松地在兩者之間轉換。
不可變類型變量的使用場景:如果你在維護一些敏感數據,并且需要把這些數據傳遞給一個并不了解的函數(或許是一個根本不是你寫的API),作為一個只負責一個軟件某一部分的工程師,如果你確信你的數據不會被調用的函數篡改,你會覺得安全了許多。
可變類型參數的使用場景:在管理動態數據集合時,你需要先把它們創建出來,逐漸地或不定期地添加它們,或者有時還要移除一些單個元素。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
