對Python3 序列解包詳解
Python 中有很多很實(shí)用的語法糖,這些語法糖可以幫助我們簡化代碼、更易理解等優(yōu)點(diǎn),接下里再看一個(gè) Python3 實(shí)用的語法序列解包(序列解包是 Python 3.0 之后才有的語法)。
那什么是序列解包呢?先看一個(gè)例子:
>>> a, b, c = 1, 2, 3 >>> a 1 >>> b 2 >>> c 3 >>>
這種方法并不限于列表和元組,而是適用于任意序列類型(甚至包括字符串和字節(jié)序列)。只要賦值運(yùn)算符左邊的變量數(shù)目與序列中的元素?cái)?shù)目相等,你都可以用這種方法將元素序列解包到另一組變量中。
解包的使用還可以利用 * 表達(dá)式獲取單個(gè)變量中的多個(gè)元素,只要它的解釋沒有歧義即可。
* 獲取的值默認(rèn)為 list
# 獲取剩余部分:
>>> a, b, *c = 0, 1, 2, 3 >>> a 0 >>> b 1 >>> c [2, 3]
# 獲取中間部分:
>>> a, *b, c = 0, 1, 2, 3 >>> a 0 >>> b [1, 2] >>> c 3
# 如果左值比右值要多,那么帶 * 的變量默認(rèn)為空
>>> a, b, *c = 0, 1 >>> a 0 >>> b 1 >>> c [] >>> a, *b, c = 0, 1 >>> a 0 >>> b [] >>> c 1
# 嵌套解包
>>> (a, b), (c, d) = (1, 2), (3, 4) >>> a 1 >>> b 2 >>> c 3 >>> d 4 >>> a, b, c, d (1, 2, 3, 4)
接下來實(shí)戰(zhàn)一下,假如一個(gè)字符串 'ABCDEFGH',要輸出下列格式:
A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
即每次取出第一個(gè)作為首,然后的字符串拆成列表,放置在后面
一般的處理過程是:
1. 將切片中索引為 0 的字符賦值給 a
2. 將切片中索引為 1 之后字符再賦值給 s
3. 用 list 函數(shù)將字符串轉(zhuǎn)變?yōu)榱斜?/p>
4. 用 while 循環(huán)來 s 來判斷,為空,則退出循環(huán)
>>> s = 'ABCDEFGH' >>> while s: ... x, s = s[0], list(s[1:]) ... print(x, s) ... A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
上面的處理,可以用序列解包的方法來處理。序列解包,在賦值時(shí)無疑更方便、更簡潔、更好理解、適用性更強(qiáng)!
運(yùn)用序列解包的功能重寫上面的代碼:
>>> s = 'ABCDEFGH' >>> while s: ... x, *s = s ... print(x, s) ... A ['B', 'C', 'D', 'E', 'F', 'G', 'H'] B ['C', 'D', 'E', 'F', 'G', 'H'] C ['D', 'E', 'F', 'G', 'H'] D ['E', 'F', 'G', 'H'] E ['F', 'G', 'H'] F ['G', 'H'] G ['H'] H []
以上這篇對Python3 序列解包詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python在for循環(huán)中更改list值的方法【推薦】
這篇文章主要介紹了Python在for循環(huán)中更改list值的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08Python中人臉圖像特征提取方法(HOG、Dlib、CNN)簡述
這篇文章主要介紹了Python中人臉圖像特征提取方法(HOG、Dlib、CNN)簡述,需要的朋友可以參考下2021-08-08Python騷操作完美實(shí)現(xiàn)短視頻偽原創(chuàng)
剪輯的視頻上傳到某平臺碰到降權(quán)怎么辦?視頻平臺都有一套自己的鑒別算法,專門用于處理視頻的二次剪輯,本篇我們來用python做一些特殊處理2022-02-02詳解如何使用Python實(shí)現(xiàn)刪除重復(fù)文件
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)刪除重復(fù)文件功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-10-10Django對接支付寶實(shí)現(xiàn)支付寶充值金幣功能示例
今天小編就為大家分享一篇Django對接支付寶實(shí)現(xiàn)支付寶充值金幣功能示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12深入解析python項(xiàng)目引用運(yùn)行路徑
這篇文章主要介紹了python項(xiàng)目引用運(yùn)行路徑的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05Python3爬蟲學(xué)習(xí)之將爬取的信息保存到本地的方法詳解
這篇文章主要介紹了Python3爬蟲學(xué)習(xí)之將爬取的信息保存到本地的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python3信息爬取、文件讀寫、圖片存儲等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12Django rstful登陸認(rèn)證并檢查session是否過期代碼實(shí)例
這篇文章主要介紹了Django rstful登陸認(rèn)證并檢查session是否過期代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08