今天我們來總結一下Python裏面差不多最常用的一種數據類型:list.
主要參考:https://docs.python.org/zh-cn/3/library/stdtypes.html#typesseq-common
DE8UG的代碼環境爲:
- Windows10
- python3.7
概念
列表是可變序列,通常用於存放同類項目的集合。
list的類定義爲: class list([iterable])
可以用多種方式構建列表:
- 使用一對方括號來表示空列表: []
- 使用方括號,其中的項以逗號分隔: [a], [a, b, c]
- 使用列表推導式: [x for x in iterable]
- 使用類型的構造器: list() 或 list(iterable)
構造器將構造一個列表,其中的項與 iterable 中的項具有相同的的值與順序。 iterable 可以是序列、支持迭代的容器或其它可迭代對象(DE8UG註解:iterable就是一個關鍵詞,代表了Python裏面的可迭代對象這個概念)。 如果 iterable 已經是一個列表,將創建並返回其副本,類似於 iterable[:]。 例如,list('abc') 返回 ['a', 'b', 'c'] 而 list( (1, 2, 3) ) 返回 [1, 2, 3]。 如果沒有給出參數,構造器將創建一個空列表 []。
其它許多操作也會產生列表,包括 sorted() 內置函數。
列表實現了所有 一般
和 可變
序列的操作。 列表還額外提供了以sort方法,sort方法我們放到以後和排序一起講解。
下面先看一下一般
和 可變
序列的操作都有哪些。
函數/操作
先看一般的操作,也就是序列的通用操作:
在表格中,s 和 t 是具有相同類型的序列,n, i, j 和 k 是整數而 x 是任何滿足 s 所規定的類型和值限制的任意對象。
in 和 not in 操作具有與比較操作相同的優先級。 + (拼接) 和 * (重複) 操作具有與對應數值運算相同的優先級。
(圖表如果顯示不出,請微信搜索:Python隨身聽,查看歷史文章)
表1:
再來看可變
序列的操作。 下面表格中的 s 是可變序列類型的實例,t 是任意可迭代對象,而 x 是符合對 s 所規定類型與值限制的任何對象 。
表2:
代碼演示
一般:
In [1]: s=[1,2,3]
In [2]: t=[4,5,6]
In [3]: 1 in s
Out[3]: True
In [4]: 4 not in s
Out[4]: True
In [5]: s+t
Out[5]: [1, 2, 3, 4, 5, 6]
In [6]: s*2
Out[6]: [1, 2, 3, 1, 2, 3]
In [7]: s[2]
Out[7]: 3
In [8]: s[1:2]
Out[8]: [2]
In [9]: len(s)
Out[9]: 3
In [10]: max(s)
Out[10]: 3
In [11]: min(s)
Out[11]: 1
In [12]: s.index(2)
Out[12]: 1
In [13]: s.count(2)
Out[13]: 1
可變序列:
In [14]: s=['a','b','c','d']
In [15]: t=['tom','de8ug','jack','marry']
In [16]: s[1]='tom'
In [17]: s
Out[17]: ['a', 'tom', 'c', 'd']
In [18]: s[2:3]=t
In [19]: s
Out[19]: ['a', 'tom', 'tom', 'de8ug', 'jack', 'marry', 'd']
In [20]: del s[2:3]
In [21]: s
Out[21]: ['a', 'tom', 'de8ug', 'jack', 'marry', 'd']
In [22]: s.append('lilei')
In [23]: s
Out[23]: ['a', 'tom', 'de8ug', 'jack', 'marry', 'd', 'lilei']
In [24]: s.extend(t)
In [25]: s
Out[25]:
['a',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [26]: s*2
Out[26]:
['a',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom'...]
In [27]: s.insert(1,'hmm')
In [28]: s
Out[28]:
['a',
'hmm',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [29]: s.pop(0)
Out[29]: 'a'
In [30]: s
Out[30]:
['hmm',
'tom',
'de8ug',
'jack',
'marry',
'd',
'lilei',
'tom',
'de8ug',
'jack',
'marry']
In [31]: s.remove('de8ug')
In [32]: s
Out[32]: ['hmm', 'tom', 'jack', 'marry', 'd', 'lilei', 'tom', 'de8ug', 'jack', 'marry']
In [33]: s.reverse()
In [34]: s
Out[34]: ['marry', 'jack', 'de8ug', 'tom', 'lilei', 'd', 'marry', 'jack', 'tom', 'hmm']
ok,希望上面的代碼你都自己練習一遍,這樣在以後用到某個方法時候才能知道怎麼回事兒。
有任何問題歡迎留言,wx搜索“Python隨身聽”,【在看】一下,下期見。