Python的序列解包
来自CloudWiki
序列解包的多种形式和用法
- 可以使用序列解包功能对多个变量同时进行赋值。
>>> x, y, z = 1, 2, 3 #多个变量同时赋值 >>> v_tuple = (False, 3.5, 'exp') >>> (x, y, z) = v_tuple >>> x, y, z = v_tuple >>> x, y = y, x #交换两个变量的值 >>> x, y, z = range(3) #可以对range对象进行序列解包 >>> x, y, z = iter([1, 2, 3]) #使用迭代器对象进行序列解包 >>> x, y, z = map(str, range(3)) #使用可迭代的map对象进行序列解包
>>> a = [1, 2, 3] >>> b, c, d = a #列表也支持序列解包的用法 >>> x, y, z = sorted([1, 3, 2]) #sorted()函数返回排序后的列表 >>> s = {'a':1, 'b':2, 'c':3} >>> b, c, d = s.items() #这是Python 3.5之前的版本执行结果 #Python 3.6之后的版本略有不同 >>> b ('c', 3) >>> b, c, d = s #使用字典时不用太多考虑元素的顺序 >>> b 'c' >>> b, c, d = s.values() >>> print(b, c, d) 1 3 2 >>> a, b, c = 'ABC' #字符串也支持序列解包 >>> print(a, b, c) A B C
- 使用序列解包可以很方便地同时遍历多个序列。
>>> keys = ['a', 'b', 'c', 'd'] >>> values = [1, 2, 3, 4] >>> for k, v in zip(keys, values): print(k, v) 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
- 使用序列解包遍历字典元素:
>>> s = {'a':1, 'b':2, 'c':3} >>> for k, v in s.items(): #字典中每个元素包含“键”和“值”两部分 print(k, v) a 1 c 3 b 2