1. 列表
1.1列表的概念
列表是一種儲存大量資料的儲存模型。
1.2列表的特點
1.3 列表的基本語法
建立列表: 變數名 = [資料1,資料2,……]
獲取列表資料: 變數名[索引]
修改列表資料: 變數名[索引] = 值
list1 = [1,2,3,'Tom','Joe','True','None']
print(list1[4]) # 獲取列表指定索引的資料
list1[4] = 'Alin' #修改列表中指定索引的資料複製程式碼
1.4 列表常用方法
方法名 | 功能 | 引數 | 返回值 | 範例 |
---|---|---|---|---|
append(data)關鍵詞:追加 | 在列表的末尾新增資料 | data:加入到列表中的資料 | None | list1 = [1,2,3] list1.append("Tom") |
insert(idx,data)關鍵詞:插入 | 在列表的指定位置插入資料,如果索引位置超過列表資料總量,資料將插入到列表末尾 | idx:插入資料的索引位置data:加入列表中的資料 | None | list1 = [1,2,3] list1.insert(0,"Tom") |
extend(model)關鍵詞:追加全部 | 在列表的末尾新增引數物件中的所有資料 | model:儲存有資料的儲存模型,該模型接受列表、元組、集合型別的物件 | None | list1 = [1,2,3] list2 = [4,5,6] tuple2 = (7,8,9) set2 = {10,11,12} list1.extend(list2) list1.extend(tuple2) list1.extend(set2) |
remove(data)關鍵詞:刪除 | 從列表中刪除指定的資料,如果資料不存在將報錯 | data:要從列表中刪除的資料 | None | list1 = [1,2,3,"Tom"] list1.remove("Tom") |
pop(idx)關鍵詞:獲取刪除 | 從列表中獲取並刪除指定索引位置上的資料,如果索引值超過列表資料總量將報錯 | idx:要從列表中獲取的資料對應的索引位置 | 獲取到的資料 | list1 = [1,2,3,"Tom"] data = list1.pop(2) |
clear()關鍵詞:清空 | 清空列表中的資料 | 無 | None | list1 = [1,2,3,"Tom"] list1.clear() |
index(data)關鍵詞:查詢位置 | 查詢列表中指定資料對應的索引,如果資料不存在將報錯 | data:在列表中要查詢的資料 | 查詢資料第一次出現的索引 | list1 = [1,2,3,"Tom"] idx = list1.index("Tom") |
count(data)關鍵詞:統計數量 | 統計列表中指定資料出現的數量 | data:在列表中要統計數量的資料 | 統計資料出現的次數 | list1 = [1,2,3,"Tom"] num = list1.count("Tom") |
2. 元組
2.1 元組的概念
元組是一種儲存固定資料的儲存模型。
2.2 元組的特點
2.3 元組的基本語法
建立元組: 變數名 = (資料1,資料2,……)
獲取元組資料: 變數名[索引]
tuple1 = (1,2,3,"Tom",True,False)
print(tuple1[4]) # True
print(tuple1)
tuple2 = (100,)
print(tuple2)複製程式碼
2.4 元組常用方法
方法名 | 功能 | 引數 | 返回值 | 範例 |
---|---|---|---|---|
index(data)關鍵詞:查詢位置 | 查詢元組中指定資料對應的索引,如果資料不存在將報錯 | data:在元組中要查詢的資料 | 查詢資料第一次出現的索引 | tuple1 = [1,2,3,"Tom"] idx = tuple1.index("Tom") |
count(data)關鍵詞:統計數量 | 統計元組中指定資料出現的數量 | data:在元組中要統計數量的資料 | 統計資料出現的次數 | tuple1 = [1,2,3,"Tom"] num =tuple1.count("Tom") |
2.5 注意事項
元組中的資料如果是非引用型別資料,不允許修改。
元組中的資料如果是引用型別物件,該物件不允許替換,而物件的屬性值可以發生改變。
2.6 元組的特殊應用
自動組包:將多個資料賦值給一個變數時,多個資料將包裝成一個元組,將元組賦值給變數,該過程稱為自動組包。
應用場景:設定返回值為多個值。
return 1,2,3 等同於 return (1,2,3)複製程式碼
應用場景:動態字串賦值傳值方式。
print(“座標%d,%d” % (10,20))複製程式碼
自動解包:將元組賦值給多個變數時,如果元組資料的數量與變數的數量相同,元組將被自動拆分成多個值,並賦值給對應變數,該過程稱為自動解包。
應用場景:多個變數接收返回值
a,b,c = func()等同於 a,b,c = (1,2,3)等同於a,b,c = 1,2,3複製程式碼
3. 集合
3.1 集合的概念
3.2集合的特點
集合沒有索引的概念。集合中的資料可以進行新增、刪除等操作。
3.3 集合的基本語法
建立集合:變數名 = {資料1,資料2,……}
set3 = {True,1,2,3,0,False,4,5,1,2,5} # 數值非0表示True#
輸出: {0, True, 2, 3, 4, 5} 複製程式碼
3.4 集合常用方法
方法名 | 功能 | 引數 | 返回值 | 範例 |
---|---|---|---|---|
add(data)關鍵詞:新增 | 在集合中新增資料 | data:加入到集合中的資料 | None | set1 = {1,2,3} set1.append("Tom") |
remove(data)關鍵詞:刪除 | 從集合中刪除指定的資料,如果資料不存在將報錯 | data:要從集合中刪除的資料 | None | set1 = {1,2,3,"Tom"} set1.remove("Tom") |
pop()關鍵詞:獲取刪除 | 從集合中獲取並刪除第一個資料 | 無 | 獲取到的資料 | set1 = {1,2,3,"Tom"} data = set1.pop() |
clear()關鍵詞:清空 | 清空集合中的資料 | 無 | None | set1 = {1,2,3,"Tom"} set1.clear() |
4. 字典
4.1 字典的概念
4.2 字典的特點
字典不具有索引
的概念,字典使用鍵key
代替索引,可以通過鍵操作字典中儲存的資料值value
。字典可以根據鍵key進行資料的新增、刪除、修改、查詢操作。
4.3 字典的基本語法
建立字典: 變數名 = {鍵1:值1,鍵2:值2,……}
新增資料: 變數名[鍵] = 值 (字典中沒有對應的鍵)
獲取資料: 變數名[鍵]
修改資料: 變數名[鍵] = 值 (字典中存在對應的鍵)
dict = {'Name': '張三', 'Age': 17, 'Class': '高三一班'}
print("dict['Name']:%s "% dict['Name']) # 取值
print("dict['Age']:%s "% dict['gender'])
dict['gender'] = '男' # 增加鍵值對
dict['Age'] = 18 # 修改鍵值對,原先的值會被替換
dict.pop('class') # 刪除classdict.clear() # 清空字典複製程式碼
4.4 字典常用方法
方法名 | 功能 | 引數 | 返回值 | 範例 |
---|---|---|---|---|
pop(key)關鍵詞:刪除獲取 | 從字典中刪除指定鍵key對應的鍵值對,如果鍵key不存在將報錯 | key:要刪除的值value對應的鍵key | 被刪除的值value | dict1 = {"name":"Tom","age":11} v = dict1.pop("name") |
popitem()關鍵詞:刪除 | 從字典中刪除指定鍵key對應的鍵值對,如果鍵key不存在將報錯 | key:要刪除的鍵值對對應的鍵key,實際測試裡面不能帶引數 | 被刪除的鍵值對,以元組的形式返回 | dict1 = {"name":"Tom","age":11} v = dict1.popitem() |
clear()關鍵詞:清空 | 清空字典中的資料 | 無 | None | dict1 = {"name":"Tom","age":11} dict1.clear() |
setdefault(key,value)關鍵詞:檢測新增 | 新增新的鍵值對,如果存在對應的鍵,則忽略該操作 | key:要新增的新鍵值對對應的鍵keyvalue: 要新增的新鍵值對對應的值value | 字典中key對應的值,如果是新增則返回引數value,如果不是新增,返回原始key對應的value | dict1 = {"name":"Tom","age":11} dict1.setdefault("age",22) |
update(dict)關鍵詞:更新資料 | 使用新字典中的資料對原始字典資料進行更新 | dict:新字典物件 | None | dict1 = {"name":"Tom","age":11} dict2 = {"address":"北京","age":22} dict1.update(dict2) |
get(key)關鍵詞:獲取 | 根據鍵key查詢字典中對應的值,如果鍵key不存在將返回None | key:要查詢的鍵key | 根據鍵key在字典中查詢的值value | dict1 = {"name":"Tom","age":11} v = dict1.get("age") |
keys()關鍵詞:獲取鍵列表 | 獲取字典中所有的鍵key組成的列表資料 | 無 | 由所有鍵組成的列表 | dict1 = {"name":"Tom","age":11} dict1.keys() |
values()關鍵詞:獲取值列表 | 獲取字典中所有的值value組成的列表資料 | 無 | 由所有值組成的列表 | dict1 = {"name":"Tom","age":11} dict1.values() |
items()關鍵詞:獲取鍵值對列表 | 獲取字典中所有的鍵值對列表資料 | 無 | 由鍵值對組成的列表,鍵值對的格式是元組資料 | dict1 = {"name":"Tom","age":11} dict1.items() |
4.5 注意事項
字典中的鍵是唯一的
。
4.6 字典的作用
5. 格式轉換
轉換成列表 | 轉換成元組 | 轉換成集合 | |
---|---|---|---|
列表list | — | tuple(列表物件) | set(列表物件) |
元組tuple | list(元組物件) | — | set(元組物件) |
集合set | list(集合物件) | tuple(集合物件) | — |
6. for迴圈
6.1 for迴圈作用
使用格式:for變數名 in 列表:
list1 = [1, 2, 3, 'Tom']
for data in list1:
print(data, end=' ')
# 輸出:1 2 3 Tom 複製程式碼
7. Range
7.1 range的功能
建立連續的整數。
7.2 range的基本語法
格式1:range(m) 生成 0 到 m-1 的整數
格式2:range(m,n) 生成 m 到 n-1 的整數
格式3:range(m,n,s) 生成 m 到 n-1 的整數,整數間隔為s
r1 = range(1,5) # 由1到5,不包含5
print(list(r1))r2 = range(1,10,2) # 由1到10,不包含10,每次自增2
print(list(r2))複製程式碼
7.3 range的應用場景
1.配合for迴圈構造指定次數的迴圈。
for _ in range(..):
迴圈執行的程式碼複製程式碼
2.快速建立由連續的整數作為資料的列表、元組、集合物件。
list(range(..))
tuple(range(..))
set(range(..))複製程式碼
8. 資料儲存結構巢狀
8.1 資料儲存結構巢狀概念
資料結構巢狀指一種資料結構中包含的資料是另一種資料結構。
8.2 範例
list1 = [1,2,3]
list2 = [4,5,6,7]
list3 = ["Joe","Sam"]
tuple1 = (5,4,3)
set1 = {8,7,6}
list4 = [list1,list2,list3,tuple1,set1]
print(list4)
# 輸出 [[1, 2, 3], [4, 5, 6, 7], ['Joe', 'Sam'], (5, 4, 3), {8, 6, 7}]複製程式碼
9. 公共方法
方法名 | 功能 | 引數 | 返回值 | 範例 |
---|---|---|---|---|
len(model)關鍵詞:資料總量 | 獲取容器模型中的資料總量 | model:儲存有資料的儲存模型,該模型接受各種容器 | 容器模型中資料的總量 | list1 = [1,2,3,'Tom',"valley"] length = len(list1) |
max(model)關鍵詞:最大值 | 獲取容器模型中的最大值,對於字典獲取字典的鍵key的最大值 | model:儲存有資料的儲存模型,該模型接受各種容器 | 容器模型中資料的最大值 | list1 = [1,2,3,4,5] max_value = max(list1) |
min(model)關鍵詞:最小值 | 獲取容器模型中的最小值,對於字典獲取字典的鍵key的最小值 | model:儲存有資料的儲存模型,該模型接受各種容器 | 容器模型中資料的最小值 | list1 = [1,2,3,4,5] min_value = min(list1) |
10. 切片
10.1 切片的作用
獲取列表、元組或字串中的區域性資料。
10.2 切片基本語法
容器物件[開始索引:結束索引:步長]。
10.3 特殊格式
省略開始索引:預設開始索引為0
範例:list1[:5:1] 等同於 list1[0:5:1]
省略結束索引:預設結束索引為資料總量
範例:list1[0::1] 等同於 list1[0:len(list1):1]
省略步長:每次遞增索引數為1 範例:list1[0:5:] 等同於 list1[0:5:1]
負數步長: 反向操作/反向步長操作,需要開始索引、結束索引逆序輸入
範例:list1[5:0:-1]
常見格式:範例:list1[:5:] 獲取索引5之前的資料(不含5)
範例:list1[4::] 獲取索引4之後的資料(含4)複製程式碼
11. 通用運算子
運算子 | 功能 | 格式 | 適用範圍 |
---|---|---|---|
+ | 將兩個容器資料合併放入第一個容器 | list1 + list2 | 列表之間或元組之間(列表與元組之間報錯) |
* | 將容器資料複製n次放入容器中 | list1 * n | 列表、元組 |
in | 判斷容器中是否包含資料 | data in list1 | 列表、元組、集合、字典(字典判斷資料是否在keys()中) |
not in | 判斷容器中是否不包含資料 | data not in list1 | 列表、元組、集合、字典(字典判斷資料是否不在keys()中) |
>、>=、==、<=、< | 比較兩個容器中的資料關係 | list1 <= list2 | 列表、元組、集合 |
12. for…else
12.1for…else基本語法
for 變數名 in 列表:
變數相關操作
else:
迴圈正常執行結束後執行的操作
for data in range(5):
print(data,end=' ')
else:
print('結束')
# 輸出: 0 1 2 3 4 結束複製程式碼
如果中間遇見break語句,迴圈未執行完畢,不會走else裡面的程式碼片段。
12.2 注意事項
1.如果for迴圈中執行了break語句,則else中的程式碼將不執行。
2.while迴圈同樣具有while…else語法格式。
13. 推導式
13.1 推導式基本語法
基礎語法格式:迴圈變數 for迴圈
list1 = [data for data in range(5)]複製程式碼
資料處理語法格式:表示式 for迴圈
list1 = [data*5 for data in range(5)]複製程式碼
資料過濾語法格式: 表示式 for迴圈 if判斷
list1 = [data for data in range(5) if data > 200] 複製程式碼
13.2 推導式的作用
推導式可以快速生成資料儲存結構中的資料。
# 建立包含1到100所有整數的列表
list1 = [data for data in range(1,101)]
# 建立包含1到10的平方和的列表
list2 = [data**2 for data in range(1,11)]複製程式碼
推導式的侷限,不能列印複雜的迴圈結構資料。