python 序列解包的多種形式和用法

2021-09-16 21:26:33 字數 1614 閱讀 6377

序列解包(sequence unpacking)是python中非常重要和常用的乙個功能,可以使用非常簡潔的形式完成複雜的功能,大幅度提高了**的可讀性,減少了程式設計師的**輸入量。例如,可以使用序列解包功能對多個變數同時進行賦值。

>>> x, y, z = 1, 2, 3 #多個變數同時賦值

>>> v_tuple = (false, 3.5, 'exp')

>>> (x, y, z) = v_tuple

>>> x, y, z = v_tuple

>>> x, y, z = range(3)#可以對range物件進行序列解包

>>> x, y, z = map(str, range(3)) #使用迭代物件進行序列解包

序列解包也可以用於列表、字典、enumerate物件、filter物件等等,但是對字典使用時,預設是對字典「鍵」進行操作,如果需要對「鍵:值」對進行操作,需要使用字典的items()方法說明,如果需要對字典「值」進行操作,則需要使用字典的values()方法明確指定。下面的**演示了列表與字典的序列解包操作:

>>> a = [1, 2, 3]

>>> b, c, d = a #列表也支援序列解包的用法

>>> x, y, z = sorted([1, 3, 2])  #sorted()函式返回排序後的列表

>>> s =

>>> b, c, d = s.items()

>>> b

('c', 3)

>>> b, c, d = s #使用字典時不用太多考慮元素的順序

>>> b

'c'>>> b, c, d = s.values()

>>> print(b, c, d)

1 3 2

使用序列解包可以很方便地同時遍歷多個序列。

>>> keys = ['a', 'b', 'c', 'd']

>>> values = [1, 2, 3, 4]

>>> for k, v in zip(keys, values):

print(k, v)

a 1b 2

c 3d 4

下面**演示了對內建函式enumerate()返回的迭代物件進行遍歷時序列解包的用法:

>>> x = ['a', 'b', 'c']

>>> for i, v in enumerate(x):

print('the value on position is '.format(i,v))

the value on position 0 is a

the value on position 1 is b

the value on position 2 is c

下面對字典的操作也使用到了序列解包:

>>> s =

>>> for k, v in s.items():  #字典中每個元素包含「鍵」和「值」兩部分

print(k, v)

a 1c 3

b 2另外,序列解包還支援下面的用法:

>>> print(*[1, 2, 3], 4, *(5, 6))

1 2 3 4 5 6

>>> *range(4), 4

(0, 1, 2, 3, 4)

>>>

>>> }

python 序列解包的多種形式及用法解析

是python中非常重要和常用的乙個功能,可以使用非常簡潔的形式完成複雜的功能,大幅度提高了 的可讀性,減少了程式設計師的 輸入量。例如,可以使用序列解包功能對多個變數同時進行賦值。x,y,z 1,2,3 多個變數同時賦值 v tuple false,3.5,exp x,y,z v tuple x,...

20 python的函式返回值的多種形式

注意一點就是我們python的函式return之後,比方說它定義了乙個區域性變數,當出了這個函式,這個區域性變數的引用計數會減1,在c語言當 了函式作用域的話區域性變數是直接被銷毀的,而我們python並沒有區域性變數這個概念,我們都是引用,所以只要出了作用域,引用就會減1。那麼問題就來了,減1是不...

python 序列解包

當函式或方法返回元組時,將元組中值賦給變數序列中的變數,這個過程就叫做序列解包。1 序列1,2,3被打包到元組values中 values 1,2,3 type values values 1,2,3 2 序列解包,元組values中的值分別被賦給變數序列中的x,y,z x,y,z values p...