基本資料型別:列表
1. 列表的介紹
列表也是python的基礎的資料型別之一,類似於Java中的陣列一樣,可以存放很多元素。列表是用括號括起來的一組資料,每個元素之間用‘,’來分割,其中元素可以是python支援的各種資料型別,建立列表的方法如下:
In [32]: l1 = [13, 56, `python`, True] # 列表裡面可以存放各種不同的資料型別(如數字、字串等等)
In [33]: l2 = [-1, [`abc`, 11.2]] # 列表中還可以巢狀列表
In [34]: l3 = list() # 建立一個空列表
2. 列表的索引和切片
列表也可以和字串一樣使用索引和切片,具體使用的方法如下:
In [35]: l1[-1] # 列表的使用索引獲取元素
Out[35]: True
In [36]: l1[1:] # 跟字串一樣,列表也可以使用切片
Out[36]: [56, `python`, True]
In [38]: l1[2][2:]
Out[38]: `thon`
3. 列表的操作
-
增加元素:增加列表元素的方法有3種
- append: 把元素新增到列表末尾
- insert:接收一個索引位置的引數,把元素插入到指定索引位置的前面,後面的元素往索引都加1
- extend: 往列表裡面新增多個元素,其引數必須是一個可迭代物件
In [39]: l3.append(`a`)
In [40]: l3.append(15) # 把元素15新增到列表l3末尾
In [41]: l3
Out[41]: [`a`, 15]
In [42]: l3.insert(1, `籃球`) # 在l3列表索引為1的位置插入元素`籃球`
In [43]: l3
Out[43]: [`a`, `籃球`, 15]
In [44]: l3.extend(l2) # 把列表l2中的元素新增到l3中
In [45]: l3
Out[45]: [`a`, `籃球`, 15, -1, [`abc`, 11.2]]
-
刪除元素:刪除元素也有3中方法操作
- pop: 預設刪除列表中最後一個元素,並返回刪除的元素,如果指定索引則刪除索引位置的元素
- remove: 移除指定的元素
- clear: 清空列表
In [46]: l4 = [111, 1, 23, 45, 1, -3434, 43624356, 234, 45]
In [47]: l4.pop() # 預設刪除列表中最後一個元素
Out[47]: 45
In [48]: l4.pop(1) # 也可以刪除指定索引位置的元素
Out[48]: 1
In [49]: l4.remove(1) # 刪除指定的元素
In [50]: l4
Out[50]: [111, 23, 45, -3434, 43624356, 234]
In [51]: l4.clear() # 清空列表
In [52]: l4
Out[52]: []
- 修改元素
In [54]: l3
Out[54]: [`a`, `籃球`, 15, -1, [`abc`, 11.2]]
In [55]: l3[2] = `學校` # 找到元素並對重新賦值(修改)
In [56]: l3
Out[56]: [`a`, `籃球`, `學校`, -1, [`abc`, 11.2]]
In [57]: l3[2:] = [`老師`, `學生`, `校園`] # 也可以切片修改
In [59]: l3
Out[59]: [`a`, `籃球`, `老師`, `學生`, `校園`]
-
查詢元素:
- index: 使用index查詢元素的索引位置
- 使用for迴圈遍歷列表查詢
In [62]: l3
Out[62]: [`a`, `籃球`, `老師`, `學生`, `校園`]
In [63]: l3.index(`籃球`)
Out[63]: 1
In [64]: for i in range(len(l3)):
...: if l3[i] == `籃球`:
...: print(i, l3[i])
1 籃球
-
其他方法:列表還有其他的集中方法
- count: 統計某個元素出現列表的個數
- sort: 對列表做排序
- reverse: 對列表反轉排序
In [65]: l4 = [45, 43624356, -3434, 1, 45, 23, 1, 111, 45, 56, 90]
In [66]: l4.count(45) # 計算45在列表l4中出現的次數
Out[66]: 3
In [67]: l4.sort() # 把列表按從小到大的順序排列
In [68]: l4
Out[68]: [-3434, 1, 1, 23, 45, 45, 45, 56, 90, 111, 43624356]
In [69]: l4.reverse() # 把列表按原來的順序倒敘排列(**沒有排序的功能**)
In [70]: l4
Out[70]: [43624356, 111, 90, 56, 45, 45, 45, 23, 1, 1, -3434]
基本資料型別:元組
元組跟列表非常類似,它也可以儲存多個元素,也可以存放不同的資料型別的元素,但是元組最大的特徵就是:元組中的元素是不可修改的,因此元組只有查詢的方法,下面是元組的使用:
In [71]: t1 = (`redhat`, `centos`, `fedora`, `ubuntu`) # 建立一個元組,如果是空元祖要使用`t = (,)`來建立
In [72]: t1
Out[72]: (`redhat`, `centos`, `fedora`, `ubuntu`)
In [73]: t1[1] # 跟列表和字串一樣,也支援索引和切片
Out[73]: `centos`
In [74]: for ele in t1: # 迴圈遍歷元組中的元素
...: print(ele)
redhat
centos
fedora
ubuntu
In [75]:
補充知識
1. range的使用
如果只是使用for迴圈遍歷元素雖然可以取到每個元素的值,但是卻沒有元素的索引,如果結合range使用就會方便的多:
In [83]: t1
Out[83]: (`redhat`, `centos`, `fedora`, `ubuntu`)
In [84]: for index in range(len(t1)): # 通過range來建立列表和元組的索引,可以同時獲取索引和元素
...: print(index, t1[index])
0 redhat
1 centos
2 fedora
3 ubuntu
In [86]: for i in range(2, 10, 2): # range也可以設定起始和結束位置,和step步長的設定,能滿足各種需求
...: print(i)
2
4
6
8
In [87]:
2. 列表推導式
列表推導式為從序列中建立列表提供了一個簡單的方法。如果沒有列表推導式,一般都是這樣建立列表的:通過將一些操作應用於序列的每個成員並通過返回的元素建立或新增到列表,或者通過滿足特定條件的元素建立子序列,如下,我們建立一個的序列:
In [77]: l5 = []
In [78]: for ele in range(10):
...: l5.append(ele ** 2) # 通過迴圈,把得到的結果追加到列表末
In [79]: l5
Out[79]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
但是如果使用列表推導式建立,就會簡單的多:
In [81]: l6 = [x **2 for x in range(10) ]
In [82]: l6
Out[82]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]