国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對Python3 序列解包詳解

2020-02-16 01:11:32
字體:
來源:轉載
供稿:網友

Python 中有很多很實用的語法糖,這些語法糖可以幫助我們簡化代碼、更易理解等優點,接下里再看一個 Python3 中特別實用的語法序列解包(序列解包是 Python 3.0 之后才有的語法)。

那什么是序列解包呢?先看一個例子:

>>> a, b, c = 1, 2, 3>>> a1>>> b2>>> c3>>> 

這種方法并不限于列表和元組,而是適用于任意序列類型(甚至包括字符串和字節序列)。只要賦值運算符左邊的變量數目與序列中的元素數目相等,你都可以用這種方法將元素序列解包到另一組變量中。

解包的使用還可以更有逼格,可以利用 * 表達式獲取單個變量中的多個元素,只要它的解釋沒有歧義即可。

* 獲取的值默認為 list

# 獲取剩余部分:

>>> a, b, *c = 0, 1, 2, 3>>> a0>>> b1>>> c[2, 3]

# 獲取中間部分:

>>> a, *b, c = 0, 1, 2, 3>>> a0>>> b[1, 2]>>> c3

# 如果左值比右值要多,那么帶 * 的變量默認為空

>>> a, b, *c = 0, 1>>> a0>>> b1>>> c[]>>> a, *b, c = 0, 1>>> a0>>> b[]>>> c1

# 嵌套解包

>>> (a, b), (c, d) = (1, 2), (3, 4)>>> a1>>> b2>>> c3>>> d4>>> a, b, c, d(1, 2, 3, 4)

接下來實戰一下,假如一個字符串 '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 []

即每次取出第一個作為首,然后的字符串拆成列表,放置在后面

一般的處理過程是:

1. 將切片中索引為 0 的字符賦值給 a

2. 將切片中索引為 1 之后字符再賦值給 s

3. 用 list 函數將字符串轉變為列表

4. 用 while 循環來 s 來判斷,為空,則退出循環

>>> 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 []

上面的處理,可以用序列解包的方法會來處理。序列解包,在賦值時無疑更方便、更簡潔、更好理解、適用性更強!

運用序列解包的功能重寫上面的代碼:

>>> 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 []            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绿春县| 寿阳县| 福清市| 镇雄县| 桃源县| 灵川县| 库车县| 海城市| 扶绥县| 广元市| 辽阳县| 天水市| 通州市| 山丹县| 双峰县| 蕲春县| 西平县| 双流县| 依安县| 黄山市| 云阳县| 个旧市| 寻甸| 公主岭市| 普兰县| 望谟县| 武鸣县| 津南区| 界首市| 天峨县| 湘潭市| 青州市| 奉化市| 车致| 达尔| 会宁县| 登封市| 鄱阳县| 太仓市| 周至县| 吴忠市|