Python学习笔记(二)Python序列之序列解包

简介

序列解包是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 = iter([1, 2, 3])             #使用迭代器对象进行序列解包

>>> x, y, z = map(str, range(3))    #使用可迭代的map对象进行序列解包

>>> a, b = b, a                              #交换两个变量的值

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

>>> a, b, c = 'ABC'                        #字符串也支持序列解包

 

序列解包对于列表和字典同样有效

例如:

>>> s = {'a':1, 'b':2, 'c':3}

>>> 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), end=' ')

('a', 1) ('b', 2) ('c', 3) ('d', 4)

使用序列解包遍历enumerate对象

例如:

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

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

    print('The value on position {0} is {1}'.format(i,v))

 

The value on position 0 is a

The value on position 1 is b

The value on position 2 is c

 

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

>>> bList = [4,5,6]

>>> cList = [7,8,9]

>>> dList = zip(aList, bList, cList)

>>> for index, value in enumerate(dList):

      print(index, ':', value)

 

0 : (1, 4, 7)

1 : (2, 5, 8)

2 : (3, 6, 9)

Python 3.5还支持下面用法的序列解包

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

1 2 3 4 5 6

>>> *range(4),4

(0, 1, 2, 3, 4)

>>> {*range(4), 4, *(5, 6, 7)}

{0, 1, 2, 3, 4, 5, 6, 7}

>>> {'x': 1, **{'y': 2}}

{'y': 2, 'x': 1}

PS:

本篇主要参考董付国老师的《Python可以这样学》一书,这是一本不错的Python入门书籍,有兴趣的可以买本看看,当然,也可以持续关注我的博客,我会一直更新相关内容的。

 

你可能感兴趣的:(Python)