python中的解包操作

2021-10-10 18:42:45 字數 1554 閱讀 2854

在看別人寫的python**的時候,有時候會看到在變數前面加上乙個*或者是**,上網找了一下相關的資料發現這些星號原來是python中的解包操作,相當於將乙個容器中的元素取出來然後分配給不同的變數,下面是我看別人寫的部落格自己的一些理解:

(1) 乙個星號解包

① 解包可以使用在多個變數賦值或者是函式呼叫中,並且任何可迭代的物件都支援解包,其中包括列表/字串/元組/字典/集合等這些常見的可迭代物件

a, b = 1, 2

a, b = b, a

print(a, b)

# 任何可迭代的物件都可以解包, 可迭代物件包括元組/字典/集合/列表

a, b, c = (1, 2, 3)

print(a, b, c)

a, b, c = "456"

print(a, b, c)

a, b, c =

print(a, b, c)

# 字典解包之後只會留下key, 而value就會被丟掉了

a, b, c =

print(a, b, c)

② 在解包的過程遇到左邊的變數個數小於右邊可迭代的變數個數的時候會先分配那些沒有帶*號的, 最後剩餘的元素分配給帶星號的變數, 而且這個*是可以放在任意位置的

a, b, *c = [1, 2, 3, 4]

print(a, b, c)

a, *b, c = [1, 2, 3, 4]

print(a, b, c)

③ 呼叫函式時時候解包傳遞引數

def unpack_fun(a, b, c):

print(a, b, c)

if __name__ == '__main__':

unpack_fun(*[1, 2, 3])

解包使用在表示式中可以用來合併兩個不同型別的可迭代引數,簡化操作

list1 = [1, 2, 3]

list2 = range(3, 8)

# 解包操作合併兩個列表

list = [*list1, *list2]

print(list)

(2) 兩個**解包

兩個**號的解包是使用在字典中的,比如合併兩個字典,在函式呼叫時候通過解包傳遞字典型別引數

def dic_fun(name, password):

print(name)

print(password)

if __name__ == '__main__':

# 下面屬於字典的解包操作我們可以使用兩個**這樣就可以將字典解包成key=value的形式

dic =

dic_fun(**dic)

# 合併兩個字典也可以使用解包操作

dic1 =

dic2 =

dic =

print(dic)

總結:本質上是將可迭代物件的元素取出來分配給其他的變數

Python中的解包

a,b,c 1 2 3 print a,b,c 1 2 3 a,b,c print a,b,c 1 2 3 2.python中交換變數值實際也是解包的過程。a,b 1,2 a,b b,a print a,b 2 1 a,b,c 1,2,3,4 print a,b,c 1 2 3,4 在函式呼叫時,你...

python中 解包的快捷用法

任意長度可迭代物件的元素解包 例如 laowang 18 boy 18800000000 17700000000 16600000000 如果我們只關注姓名和 號碼,我們可以這樣使用 msg ls laowang 18 boy 18800000000 17700000000 16600000000 ...

python 序列解包

當函式或方法返回元組時,將元組中值賦給變數序列中的變數,這個過程就叫做序列解包。1 序列1,2,3被打包到元組values中 values 1,2,3 type values values 1,2,3 2 序列解包,元組values中的值分別被賦給變數序列中的x,y,z x,y,z values p...