### 解構的理解與用法 ###
解構是python很有特色的乙個功能,被很多語言借鑑(例如es6)
#元素按照順序賦值給變數
in [31]: lst=list(range(5))in [32]: head,*mid,tail=lst
in [33]: print
(head,tail)
0 4in [34]: print
(mid)
[1, 2, 3]
#
變數和元素個數必須匹配in [36]: v1,v2,v3,v4,v5,v6=lst
valueerror:
not enough values to unpack (expected 6, got 5)
#
*表示可以接受任意個數的元素#
但*變數不能單獨出現
in [35]: *v=lst
syntaxerror: starred assignment target must be
in a list or
tuple
#也不能重複出現
in [40]: head,*m1,*m2,tail=list(range(5)) ^syntaxerror: two starred expressions
inassignment
#帶*的這個變數的輸出是乙個列表
in [37]: head,*mid,tail=1,2in [38]: print
(head,tail)
1 2in [39]: print
(mid)
#
解構是支援多層次的in [14]: lst=[1,(2,3),5]
in [15]: _,(_,val),*_=lst
in [16]: print(val)
3in [17]: _,[*_,val],*_=lst
in [18]: print(val)
3
### 乙個慣例,下劃線『_』 ###
#python有乙個慣例,是使用單個下劃線「_」來表示丟棄該變數
in [42]: head,*_,tail=lst
in [7]: v1,_,v3,*_,vd,_=lst
### 解構的使用場景 ###
1. 解析配置檔案
in [20]: key,_,value='env=path=/usr/bin:$path
'.partition('='
)in [21]: print(key);print
(value)
envpath=/usr/bin:$path
2. 非常複雜的資料結構,多層巢狀的線性結構的時候,可以用解構快速提取其中的值
3. 函式返回值
### 封裝 ###
封裝:相當於定義乙個元組時省略小括號
in [18]: t1=1,2;t2=(1,2)in [20]: type(t1)
out[20]: tuple
in [21]: type(t2)
out[21]: tuple //t1和t2等效
#可用於快速交換兩個變數的值
in [1]: x=1;y=2in [3]: x,y=y,x //左邊解構,右邊封裝
in [4]: print
(x,y)
2 1
PY3 內建資料結構 5 字串編碼
python2中只有 unicode型別 而python3中有 string bytes兩種型別 1.str是文字序列 bytes是位元組序列 文字 字元 2.位元組是沒有編碼的 文字是有編碼的 單位元組編碼 雙位元組編碼 utf 8 gbk,gb18030等 3.什麼是編碼?編碼可以說是一種 位元...
Python3內建資料結構
資料結構從廣義上理解,就是一組資料的儲存結構 python中的內建資料結構 列表list 元組tuple 字典dict 集合set 1.列表的每個元素可變,列表為可變型別 相對於元組和字串是不可變型別 2.列表是有序的,每乙個元素的位置都是確定的 3.列表中元素可以是python的任何物件 字串 數...
py資料結構化與儲存
1.將新聞的正文內容儲存到文字檔案。content info content soup.select content 0 text with open test.txt a encoding utf 8 as story story.write content info content 2.將新聞資...