欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

對Python3 序列解包詳解

 更新時(shí)間:2019年02月16日 10:42:03   作者:極客點(diǎn)兒  
今天小編就為大家分享一篇對Python3 序列解包詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

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)文章

最新評論