這篇文章給大家分享的是有關Python序列解包、鏈式賦值、鏈式比較的案例的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
一、序列解包
序列解包(或可迭代對象解包):解包就是從序列中取出其中的元素的過程,將一個序列(或任何可迭代對象)解包,并將得到的值存儲到一系列變量中。
一般情況下要解包的序列包含的元素個數必須與你在等號左邊列出的目標個數相同,否則Python將引發異常。但如果要解包序列元素個數與左邊變量數不同的情況下,可使用星號運算符(*)來收集多余的值,這樣無需確保值和變量的個數相同,還可將帶星號的變量放在任何位置。賦值語句的右邊可以是任何類型的序列,但帶星號的變量最終包含的總是一個列表。在變量和值的個數相同時亦如此。這種解包方式也可用于函數參數列表中。
舉例:
\>>>l,s,t,d=['a','bc','de'],'abcd',(1,2,3),{1:'a',2:'b'} #定義4個列表、字符串、元組和字典變量; \>>>l1,l2,l3=l? #用l1、l2、l3解包列表,l1,l2,l3分別得到值'a', 'bc', 'de'; \>>>s1,*s2,s3=s #用s1、s2、s3解包字符串,s1,s2,s3分別得到值'a', ['b', 'c'], 'd',注意星號的使用; \>>>t1,*t2=t #用t1、t2解包元組,t1,t2分別得到值1, [2, 3]; \>>>d={i:chr(ord('a')+i) for i in range(5)}? #d={0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'} \>>>d1,*d2,d3=d? #d1=0,d2=[1,2,3],d3=4,這個解包得到的是字典的鍵,不是字典項
執行結果如下
上面代碼中,要得到字典的鍵和值,可以使用:k,v=d.popitem() #k=4, v='e'。
二、復雜序列解包
上面介紹的序列解包所舉例子是一種比較簡單的情況,即序列中的元素類型不是容器類型,但如果出現序列中的元素也是序列,此時需要使用復雜序列解包。 復雜序列解包是在序列中內嵌序列的情況下,解包語句的左邊也可以包含對應序列,從而對序列中的序列進行解包??聪旅娴睦樱?/p>
\>>>a,[b,c],*d=(1,(2,3),4,5) \>>>a,(b,c),*d=(1,[2,3],4,5)
以上兩個語句執行后,a,b,c,d對應的值都是對應為:1, 2, 3, [4, 5]
\>>>a,(b,*c),*d=(1,[2,3,10],4,5)
解包后,a,b,c,d對應的值分別為:1, 2, [3, 10], [4, 5]
\>>>a,(b,c,e),*d=(1,[2,3,{10,11}],4,5)
解包后,a,b,c,d,e對應的值分別為:1, 2, 3, [4, 5], {10, 11}
三、鏈式賦值
鏈式賦值是用一行語句將多個變量賦值為同一個值,語法如下:
變量1=變量2=變量n=賦值表達式
該語法實際執行效果類似于:
變量n=賦值表達式
變量2=變量n
變量1=變量2
這種執行效果表示所有變量都指向同一個對象。
注意:上面部分關于賦值順序的描述錯誤,感謝博友Johnny592的提醒,為了讓看到本文的人加深印象,老猿沒有直接修改這部分內容,而是在此說明,并另外在博文《關于鏈式賦值的賦值順序問題》中進行了詳細說明。
四、鏈式比較
鏈式比較就是在一個比較語句中部使用邏輯運算符直接判斷某個數據是否在某區間,如:if ?0=<weekday<5。
感謝各位的閱讀!關于Python序列解包、鏈式賦值、鏈式比較的案例就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。