python基礎語法 - 資料儲存模型

python小胡發表於2018-12-15

資料儲存

一、列表

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)]
複製程式碼

相關文章