資料儲存
一、列表
1、列表的概念
列表是一種儲存大資料的儲存模型
2、列表的特點
列表具有索引的概念,可以通過索引操作列表中的資料,列表中的資料可以進行新增、刪除、修改、查詢等操作。
3、列表的基本用法
建立列表: 變數名 = [資料1,資料2,……]
獲取列表資料: 變數名[索引]
修改列表資料: 變數名[索引] = 值
複製程式碼
list1 = [2,"test.py",True,None,"haha"]
print(list1[4])
list1[4] = "heihei"
複製程式碼
4、列表常用方法(基本操作)
1、append:追加
方法名:append(data)
功能:在列表的末尾新增資料
複製程式碼
程式碼演示:
list1 = [1,2,3,4,5]
list1.append(6) # append(data) data 代表加入到列表中的資料
print(list1)
複製程式碼
執行結果:
[1, 2, 3, 4, 5, 6]
複製程式碼
2、insert:插入
方法名:insert(idx,data)
功能:列印結果:在列表的指定位置插入資料,如果索引位置超過列表資料總量,資料將插入到列表末尾
複製程式碼
程式碼演示:
list1 = [1,2,3,4,5]
list1.insert(0,"hello") # 在索引為 0 的地方插入 "hello",其餘資料整體後移一位。
print(list1)
複製程式碼
執行結果:
['hello', 1, 2, 3, 4, 5]
複製程式碼
3、extend:追加全部
方法名:extend(model)
功能:在列表的末尾新增引數物件中的所有資料
model:儲存有資料的儲存模型,該模型接受列表、元組、集合型別的物件
複製程式碼
程式碼演示:
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)
print(list1)
複製程式碼
執行結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
複製程式碼
4、remove: 刪除
方法名:remove(data)
功能:從列表中刪除指定的資料,如果資料不存在將報錯
data:要從列表中刪除的資料
複製程式碼
程式碼演示:
list1 = [1,2,3,4,5]
list1.remove(1) # 從列表中刪除 1 這個資料
print(list1)
複製程式碼
執行結果:
[2, 3, 4, 5]
複製程式碼
5、pop:獲取刪除,刪除資料,並返回這個資料
方法名:pop(idx)
功能:從列表中獲取並刪除指定索引位置上的資料,如果索引值超過列表資料總量將報錯
idx: 要從列表中獲取的資料對應的索引位置
返回值:返回被刪除的值
複製程式碼
程式碼演示:
list1 = [1, 2, 3, 4, 5]
list2 = list1.pop(1) # 刪除索引為 1 的資料,並返回該值
print(list2)
print(list1)
複製程式碼
執行結果:
2 # 這個是被刪掉的值
[1, 3, 4, 5]
複製程式碼
6、clear: 清空
方法名:clear() 功能:清空列表中的資料 返回值:
程式碼演示:
list1 = [1, 2, 3, 4, 5]
list1.clear()
print(list1)
複製程式碼
執行結果:
[]
複製程式碼
7、index: 查詢位置
方法名:index(data)
功能:查詢列表中指定資料對應的索引,如果資料不存在將報錯
data:在列表中要查詢的資料
返回值:查詢資料第一次出現的索引
複製程式碼
程式碼演示:
list1 = [1, 2, 3, 4, 5]
print(list1.index(4)) # 該操作會返回資料的索引值
複製程式碼
執行結果:
3
複製程式碼
8、count:統計資料
方法名:count(data)
功能:統計列表中指定資料出現的數量
data:在列表中要統計數量的資料
返回值:統計資料出現的次數
複製程式碼
程式碼演示:
list1 = [1, 2, 3, 4, 5, 3, 4, 2, 1]
print(list1.count(4)) # 統計資料中 4 的個數
複製程式碼
執行結果:
2
複製程式碼
二、元組
1、元組的概念
元組是一種儲存固定資料的儲存模型
2、元祖的特點
元組具有索引的概念,可以通過索引操作元組裡面的資料。元組中的資料可以進行查詢操作,但不能進行新增、刪除、修改操作。
3、元組的基本用法
建立元祖: 變數名 = (資料一,資料二,資料三,···)
tuple1 = (1, 2, 34, 5, 6,)
print(tuple1)
複製程式碼
4、元組常用方法(基本操作)
1、index:查詢位置
方法名:index(data) 功能:查詢元組中指定資料對應的索引,如果資料不存在將報錯 data:在元組中要查詢的資料 返回值:查詢資料第一次出現的索引
程式碼演示:
tuple1 = (1, 2, 3, 4, 5)
print(tuple1.index(4)) # 該操作會返回資料的索引值
複製程式碼
執行結果:
3
複製程式碼
2、count:統計資料
方法名:count(data)
功能:統計元組中指定資料出現的數量
data:在元組中要統計數量的資料
返回值:統計資料出現的次數
複製程式碼
程式碼演示:
tuple1 = (1, 2, 3, 4, 5, 3, 4, 2, 1)
print(tuple1.count(5))
複製程式碼
執行結果:
1
複製程式碼
5、注意事項
- 元組中的資料如果是非引用型別資料,不允許修改
- 元組中的資料如果是引用型別物件,該物件不允許替換,而物件的屬性值可以發生改變
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
場景:動態字串賦值取值方式
print(“座標%d,%d” % (10,20)) 將10給第一個%d,將20給第二個%d
複製程式碼
三、集合
1、集合的概念
幾何是一種儲存大量無序不重複資料的儲存模型。
2、集合的特點
集合沒有索引的概念。集合中的資料可以進行新增、刪除等操作。
3、集合的進本語法
建立集合:
變數名 = {資料一,資料二,資料三,···}
set1 = {9,29,"hello"}
複製程式碼
4、集合常用方法(基本操作)
1、add:新增
方法名:add(data)
功能:在集合中新增資料。
data:加入到集合中的資料
複製程式碼
程式碼演示:
set1 = {1, 23, "hello"}
set1.add(4) # 將資料 4 新增到集合中
print(set1)
複製程式碼
執行結果:
{1, 'hello', 4, 23}
複製程式碼
2、remove:刪除
方法名:remove(data)
功能:從集合中刪除指定的資料,如果資料不存在將報錯
data:要從集合中刪除的資料
複製程式碼
程式碼演示:
set1 = {1, 23, "hello"}
set1.remove(1) # 刪除掉資料為 1 的資料
print(set1)
複製程式碼
執行結果:
{'hello', 23}
複製程式碼
3、pop:獲取刪除
方法名:pop()
功能:從集合中獲取並刪除第一個資料
返回值:獲取到的值
複製程式碼
程式碼演示:
"""集合中的資料時自動排序的"""
set1 = {1, 23, "hello", "1.py"}
print(set1)
set1.pop()
print(set1)
複製程式碼
執行結果:
{'hello', 1, '1.py', 23}
{1, '1.py', 23}
複製程式碼
4、clear:清空
方法名:clear()
功能:清空集合中的資料
複製程式碼
程式碼演示:
set1 = {1, 23, "hello", "1.py"}
set1.clear()
print(set1)
複製程式碼
執行結果:
set()
複製程式碼
四、字典
1、字典的概念
字典是一種使用“鍵值對結構”儲存資料的儲存模型。
2、字典的特點
字典不具有索引的概念,字典使用鍵 key 代替索引,可以通過鍵操作字典中儲存的資料值value。字典可以根據鍵key進行資料的新增、刪除、修改、查詢操作。
3、字典的基本語法
建立字典: 變數名 = {鍵1:值1,鍵2:值2,……}
新增資料: 變數名[鍵] = 值 (字典中沒有對應的鍵)
獲取資料: 變數名[鍵]
修改資料: 變數名[鍵] = 值 (字典中存在對應的鍵)
複製程式碼
程式碼演示:
dict1 = {"name": "test", "age": 11,}
print(dict1)
dict1["sex"] = 1 # 如果原始字典裡面沒有這個鍵名,這個操作就是新增
print(dict1)
dict1["age"] # 這個是獲取鍵名為 "age" 對應的值
print(dict1["age"])
dict1["name"] = "haha" # 如果原始字典裡面有這個鍵名,這個操作就是修改鍵名所對應的值
print(dict1)
複製程式碼
執行結果:
{'name': 'test', 'age': 11}
{'name': 'test', 'age': 11, 'sex': 1}
11
{'name': 'haha', 'age': 11, 'sex': 1}
複製程式碼
4、字典常用方法(基本操作)
1、pop :刪除獲取
方法名:pop(key)
功能:從字典中刪除指定鍵key對應的鍵值對,如果鍵key不存在將報錯
key:要刪除的值 value 對應的鍵 key
返回值:被刪除的值value
複製程式碼
程式碼演示:
"""使用 pop(key) 刪除時,會返回被刪除的值value """
dict1 = {"name": "test", "age": 11,}
v1 = dict1.pop("name")
print(v1)
print(dict1)
複製程式碼
執行結果:
test
{'age': 11}
複製程式碼
2、popitem: 刪除
方法名:popitem() 功能:從字典中預設刪除最後一個鍵key對應的鍵值對,如果鍵key不存在將報錯 key:要刪除的鍵值對對應的鍵key 返回值:被刪除的鍵值對,以元組的形式返回 被刪除的鍵值對,以元組的形式返回
程式碼演示:
dict1 = {"name": "test", "age": 11, "sex": 1}
v1 = dict1.popitem()
print(v1)
print(dict1)
複製程式碼
執行結果:
('sex', 1)
{'name': 'test', 'age': 11}
複製程式碼
3、clear:清空
方法名:clear()
功能:清空字典中資料
複製程式碼
程式碼演示:
dict1 = {"name": "test", "age": 11, "sex": 1}
dict1.clear()
print(dict1)
複製程式碼
執行結果:
{}
複製程式碼
4、setdefault: 檢測新增
方法名:setdefault(key,value)
功能:新增新的鍵值對,如果存在對應的鍵,則忽略該操作
key:要新增的新鍵值對對應的鍵key
value: 要新增的新鍵值對對應的值value
返回值:字典中key對應的值,如果是新增則返回引數value,如果不是新增,返回原始key對應的value
複製程式碼
程式碼演示:
dict1 = {"name": "test", "age": 11, "sex": 1}
se1 = dict1.setdefault("sex",0)
print(se1)
print(dict1)
複製程式碼
執行結果:
1
{'name': 'test', 'age': 11, 'sex': 1}
複製程式碼
5、update :更新資料
方法名:update(dict)
功能:使用新字典中的資料對原始字典中的資料進行更新
dict: 新字典物件
複製程式碼
程式碼演示:
dict1 = {"name":"itcast","age":11}
dict2 = {"address":"北京","age":22}
dict1.update(dict2) # 對於原始字典中原有的鍵名對應的值進行更新,如果原始字典沒有,則預設追加。
print(dict1)
複製程式碼
執行結果:
{'name': 'itcast', 'age': 22, 'address': '北京'}
複製程式碼
6、get:獲取
方法名:get(key)
功能:根據鍵 key 查詢字典中對應的值,如果鍵 key 不存在將返回 None
key:要查詢的鍵 key
返回值:根據鍵key在字典中查詢的值value
複製程式碼
程式碼演示:
dict1 = {"name": "haha", "age": 11}
val = dict1.get("age")
print(val)
複製程式碼
執行結果:
11
複製程式碼
7、keys:獲取鍵列表
方法名:keys()
功能:獲取字典中所有的鍵key組成的列表資料
返回值:有所有的鍵組成的列表
複製程式碼
程式碼演示:
dict1 = {"name": "haha", "age": 11}
print(dict1.keys())
複製程式碼
執行結果:
dict_keys(['name', 'age'])
複製程式碼
8、values:獲取值列表
方法名:values()
功能:獲取字典中所有的值value組成的列表資料
返回值:由所有值組成的列表
複製程式碼
程式碼演示:
dict1 = {"name": "haha", "age": 11}
print(dict1.values())
複製程式碼
執行結果:
dict_values(['haha', 11])
複製程式碼
9、items:獲取健值對列表
方法名:items()
功能:獲取字典中所有的鍵值對列表資料
返回值:由鍵值對組成的列表,鍵值對的格式是元組資料
複製程式碼
演示程式碼:
dict1 = {"name": "haha", "age": 11}
print(dict1.items())
複製程式碼
執行結果:
dict_items([('name', 'haha'), ('age', 11)])
複製程式碼
5、注意事項
字典中的鍵是唯一的
6、字典的作用
1、當需要儲存少量資料,並期望在程式設計期以最快的速度獲取單個資料,推薦選擇字典。
2.當需要使用非物件格式儲存單個物件的屬性值,推薦選擇字典。
五、格式轉換
轉換成列表 | 轉換成元組 | 轉換成集合 | |
---|---|---|---|
列表list | — | tuple(列表物件) | set(列表物件) |
元組tuple | list(元組物件) | — | set(元組物件) |
集合set | list(集合物件) | tuple(集合物件) | — |
六、for 迴圈
1、for 迴圈作用
for 迴圈用於對資料儲存模型進行訪問遍歷
2、for 迴圈基本語法
for 變數名 in 列表:
變數相關操作
複製程式碼
程式碼演示:
list1 = [1,2,5,6,6]
for i in list1:
print(i)
複製程式碼
執行結果:
1
2
5
6
6
複製程式碼
七、range
1、range 的功能
建立連續的整數
2、range 的基本語法
格式1:range(m) 生成 0 到 m-1 的整數
格式2:range(m,n) 生成 m 到 n-1 的整數
格式3:range(m,n,s) 生成 m 到 n-1 的整數,整數間隔為s
複製程式碼
3、range 的應用場景
1.配合for迴圈構造指定次數的迴圈
for _ in range(..):
____迴圈執行的程式碼
複製程式碼
2.快速建立由連續的整數作為資料的列表、元組、集合物件
list(range(..))
tuple(range(..))
set(range(..))
複製程式碼
八、資料儲存結構巢狀
1、資料儲存結構巢狀概念
資料結構巢狀指一種資料結構中包含的資料是另一種資料結構 程式碼演示:
list1 = [1, 2, 5, 6, 6]
tuple1 = (7, 8, 9)
set1 = {10, 11, 12}
dict1 = {"name": 1, "age": 18}
list2 = [list1, tuple1, set1, dict1]
print(list2)
複製程式碼
執行結果:
[[1, 2, 5, 6, 6], (7, 8, 9), {10, 11, 12}, {'name': 1, 'age': 18}]
複製程式碼
九、公共方法
1、len :資料總量
方法名:len(model)
功能:獲取容器模型中的資料總量
model:儲存有資料的儲存模型,該模型接受各種容器
返回值:容器模型中資料的總量
複製程式碼
程式碼演示:
list1 = [1, 2, 5, 6, 6]
print(len(list1))
複製程式碼
執行結果:
5
複製程式碼
2、min :最小值
方法名:min(model)
功能:獲取容器模型中的最小值,對於字典獲取字典的鍵key的最小值
model: 儲存有資料的儲存模型,該模型接受各種容器
返回值:容器模型中資料最小的值
複製程式碼
程式碼演示:
list1 = [1, 2, 5, 6, 6]
print(min(list1))
複製程式碼
執行結果:
1
複製程式碼
3、max :最大值
方法名:max(model)
功能:獲取容器模型中的大小值,對於字典獲取字典的鍵key的最大值
model: 儲存有資料的儲存模型,該模型接受各種容器
返回值:容器模型中資料最大的值
複製程式碼
程式碼演示:
list1 = [1, 2, 5, 6, 6]
print(max(list1))
複製程式碼
執行結果:
6
複製程式碼
十、切片
1、切片的作用
獲取列表、元組或字串中的區域性資料
2、切片的基礎語法
容器物件[開始索引:結束索引:步長]
複製程式碼
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)
複製程式碼
十一、通用運算子
運算子 | 功能 | 格式 | 適用範圍 |
---|---|---|---|
+ | 將兩個容器資料合併放入第一個容器 | list1 + list2 | 列表之間或元組之間(列表與元組之間報錯) |
* | 將容器資料複製n次放入容器中 | list1 * n | 列表、元組 |
in | 判斷容器中是否包含資料 | data in list1 | 列表、元組、集合、字典(字典判斷資料是否在keys()中) |
not in | 判斷容器中是否不包含資料 | data not in list1 | 列表、元組、集合、字典(字典判斷資料是否不在keys()中) |
>、>=、==、<=、< | 比較兩個容器中的資料關係 | list1 <= list2 | 列表、元組、集合 |
十二、for…else
1、for…else基本語法
for 變數名 in 列表:
變數相關操作
else:
迴圈正常執行結束後執行的操作
複製程式碼
程式碼演示:
for data in range(5):
print(data)
else:
print("end")
複製程式碼
執行結果:
0
1
2
3
4
end
複製程式碼
2、注意事項
- 1.如果for迴圈中執行了break語句,則else中的程式碼將不執行
- 2.while迴圈同樣具有while…else語法格式
十三、推導式
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]
複製程式碼
2、推導式的作用
推導式可以快速生成資料儲存結構中的資料
範例1:建立包含1到100所有整數的列表
list1 = [data for data in range(1,101)]
範例2:建立包含1到10的平方和的列表
list2 = [data**2 for data in range(1,11)]
範例3:建立字典,key從1到5,value是key的平方
dict1 = [(data,data**2) for data in range(1,6)]
複製程式碼