對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)文章
Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法
這篇文章主要介紹了Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法,昨晚寫了個(gè)小爬蟲,簡單分析下發(fā)現(xiàn)可以修改請求的url,直接獲取所有目標(biāo)的數(shù)據(jù),想先打印在控制臺(tái)看看,發(fā)現(xiàn)打印的數(shù)據(jù)不全,所以本文記錄了一下解決方法,需要的朋友可以參考下2024-03-03
詳解Python中的GIL(全局解釋器鎖)詳解及解決GIL的幾種方案
這篇文章主要介紹了詳解Python中的GIL(全局解釋器鎖)詳解及解決GIL的幾種方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
調(diào)用其他python腳本文件里面的類和方法過程解析
這篇文章主要介紹了調(diào)用其他python腳本文件里面的類和方法過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python的Flask站點(diǎn)中集成xhEditor文本編輯器的教程
xhEditor是基于jQuery的Web端文本編輯器,基本的圖片上傳等功能也都帶有,這里我們就來看一下Python的Flask站點(diǎn)中集成xhEditor文本編輯器的教程2016-06-06
python實(shí)現(xiàn)倒計(jì)時(shí)小工具
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)倒計(jì)時(shí)小工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
python利用 pytesseract快速識(shí)別提取圖片中的文字((圖片識(shí)別)
本文介紹了tesseract的python調(diào)用,也就是pytesseract庫,其中還有一些其他的內(nèi)容并沒有涉及,僅涉及到了圖片提取文字,如果你對其感興趣,可以深入探索一下,也希望能和我探討一下2022-11-11

