清單學習筆記
- 序列(sequence)
-
- 序列是什麼
- 序列有哪些
- 清單(list)
-
- 清單是什麼
- 清單的基本操作
-
- 切片
-
- 文法及代碼示例
- 通用操作
-
- 代碼示例
- 清單的修改(切片和del)
-
- 代碼示例
- 清單的方法
-
- append() 添加
-
- 代碼示例
- insert()插入
-
- 代碼示例
- extend()擴充
-
- 代碼示例
- pop()删除
-
- 代碼示例
- remove()删除
-
- 代碼示例
- reverse()翻轉
-
- 代碼示例
- sort()排序
-
- 代碼示例
- 周遊清單
-
- for循環周遊清單及示例
- range(start, stop[, step])用法及示例
序列(sequence)
序列是什麼
- 序列是Python中最基本的一種資料結構。序列用于儲存一組有序的資料,所有的資料在序列當中都有一個唯一的位置(索引)并且序列中的資料會按照添加的順序來配置設定索引
- 資料結構指計算機中資料存儲的方式
序列有哪些
- 可變序列(序列中的元素可以改變):例如 清單(list)字典(dict)
- 不可變序列(序列中的元素不能改變):例如 字元串(str)元組(tuple)
清單(list)
清單是什麼
- 清單是Python中的一個對象
- 清單的作用
- 清單中可以儲存多個有序的資料
- 清單是用來存儲對象的對象
清單的基本操作
切片
- 通過切片來擷取指定的元素
- 通過切片擷取元素時,會包括起始位置的元素,不會包括結束位置的元素
- 起始位置和結束位置的索引可以不寫
- 如果省略結束位置, 則會從目前的開始位置一直截取到最後
- 如果省略開始位置, 則會從第一個元素截取到結束的元素,但是不包括結束的元素
- 如果開始位置和結束位置都省略, 則則會從第一個元素開始截取到最後一個元素
- 步長表示每次擷取元素的間隔,預設是1(可以省略不寫)
- 步長不能是0,但可以是是負數
文法及代碼示例
- 文法: 清單[起始 : 結束 : 步長]
list1 = [1,2,3,4,5,6,7,8,9]
>>> list1[1:5]
[2, 3, 4, 5]
>>> list[1:5:2]
>>> list1[1:5:2]
[2, 4]
# 反轉清單
>>> list1[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
通用操作
- + 和 *
- + 可以将兩個清單拼接成一個清單
- * 可以将清單重複指定的次數 (注意2個清單不能夠做乘法,要和整數做乘法運算)
- in 和 not in
- in用來檢查指定元素是否在清單當中
- not in 用來檢查指定元素是否不在清單當中
- len() 擷取清單中元素的個數
- max() 擷取清單中最大值
- min() 擷取清單中最小值
- list.index(x[, start[, end]])
- 第一個參數 擷取指定元素在清單中的位置
- 第二個參數 表示查找的起始位置
- 第三個參數 表示查找的結束位置
- list.count(x) 統計指定元素在清單中出現的個數
代碼示例
# + 和 *
>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> list1 + list2 # 兩個清單相加
[1, 2, 3, 4, 5, 6]
>>> list1 * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
# in 和 not in
>>> list1 = [1,2,3,4,5,6]
>>> 1 in list1 # 1 是否在list1中
True
>>> 7 in list1
False
>>> 1 not in list1 # 1 是否不在list1中
False
>>> 7 not in list1
True
# len()
>>> list1 = [1,2,3,4,5,6]
>>> len(list1) # 擷取list清單中元素的個數
6
# max()和min()
>>> max(list1)
6
>>> min(list1)
1
# list.index(x[, start[, end]])
>>> list1 = [1,2,3,4,5,6,7,8,9]
>>> list1.index(2)
1
>>> list1.index(9)
8
>>> list1 = ['hello', 'python', 'world']
>>> list1.index('hello')
0
>>> list1.index('python')
1
>>> list1.index('hello', 1, 2) # 查找不到,則抛出ValueError異常
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: 'hello' is not in list
# list.count(x)
>>> list1 = [1,1,2,3,4,4,4,5,6]
>>> list1.count(1)
2
>>> list1.count(4)
3
>>> list1.count(10) # 10不存在于清單,則出現0次
0
清單的修改(切片和del)
- 通過切片來修改(起始就是給切片的内容重新指派,但是指派的内容必須是一個序列)
- 當設定了步長時,序列中元素的個數必須和切片中元素的個數保持一緻
- 通過切片來删除元素
- del list[起始 : 結束]
- list = []
代碼示例
- 通過切片修改
>>> list1 = [1,2,3,4,5,6]
>>> list1[1:3] = ['a','b','c','d']
[1, 'a', 'b', 'c', 'd', 4, 5, 6]
# 指定步長
>>> list1 = [1,2,3,4,5,6]
>>> list1[1:5:2] = ['a','b']
>>> list1
[1, 'a', 3, 'b', 5, 6]
# 指定步長 如果序列中元素的個數和切片中元素的個數不一緻
# 則會抛出 ValueError 異常
>>> list1[1:5:2] = ['a','b','c']
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: attempt to assign sequence of size 3 to extended slice of size 2
- 通過del關鍵字修改
>>> list1 = [1,2,3,4,5,6]
>>> del list1[1] # 删除清單中索引為1的元素
[1, 3, 4, 5, 6]
>>> del list1[1:3] # 删除索引為1到索引為3(不包含)的元素
>>> list1
[1, 5, 6]
# 如果索引超過清單,則抛出IndexError異常
>>> del list1[10]
Traceback (most recent call last):
File "<input>", line 1, in <module>
IndexError: list assignment index out of range
清單的方法
append() 添加
- append() 向清單的最後添加一個元素
代碼示例
>>> list1 = [1,2,3,4]
>>> list1.append(5)
[1, 2, 3, 4, 5]
insert()插入
- insert(arg1,arg2) 像清單指定位置插入一個元素 參數1:要插入的位置 參數2:要插入的元素
代碼示例
>>> list1 = [1,2,3,4]
>>> list1.insert(0,'a')
['a', 1, 2, 3, 4]
>>> list1.insert(3,'a')
['a', 1, 2, 'a', 3, 4]
extend()擴充
- extend(iterable) 使用一個新的序列來擴充目前序列(它會将該序列的中元素添加到清單中) 參數需要傳遞一個序列
代碼示例
>>> list1 = [1,2,3,4]
>>> list2 = [5,6,7]
>>> list1.extend(list2)
>>>> list1
[1, 2, 3, 4, 5, 6, 7]
pop()删除
- pop() 根據索引删除并傳回指定元素
代碼示例
>>> list1 = [1,2,3,4]
>>> list1.pop(1) # 删除索引為1的元素,并傳回該元素
2
>>> list1
[1, 3, 4]
remove()删除
- remove() 删除指定元素 (如果相同值的元素有多個,隻會删除第一個)
代碼示例
>>> list1 = [1,2,3,4]
>>> list1.remove(2) # 删除值為2的元素,非索引
>>> list1
[1, 3, 4]
reverse()翻轉
- reverse() 翻轉清單
代碼示例
>>> list1 = [1,2,3,4]
>>> list1.reverse() # 把清單順序反轉
>>> list1
[4, 3, 2, 1]
sort()排序
- sort(key=None,reverse=False) 用來對清單中的元素進行排序
代碼示例
>>> list1 = [3,2,1,5,4,8,5,11,2,4]
>>> list1.sort() # 預設按照正序排列
>>> list1
[1, 2, 2, 3, 4, 4, 5, 5, 8, 11]
>>> list1 = [3,2,1,5,4,8,5,11,2,4]
>>> list1.sort(reverse=False) # 指定reverse=False按照倒序排列
>>> list1
[1, 2, 2, 3, 4, 4, 5, 5, 8, 11]
周遊清單
for循環周遊清單及示例
- for循環的代碼塊會執行多次,序列中有幾個元素就會執行幾次。每執行一次就會将序列中的一個元素指派給變量,是以我們可以通過變量來擷取清單中的元素
for 變量 in 序列(周遊的規則):
代碼塊
>>> list1 = [1,2,3,4,5]
>>> for i in list1:
... print(i)
1
2
3
4
5
range(start, stop[, step])用法及示例
參數說明
- ·start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價于range(0, 5);
- stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
- step:步長,預設為1。例如:range(0, 5) 等價于 range(0, 5, 1)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> for i in range(1,5):
... print(i)
...
1
2
3
4
>>> for i in range(1,5,2):
... print(i)
...
1
3