序列解包(for x,y in zip(keys, values):)详解。
置顶 2018年09月28日 01:02:20 Apy码农 阅读数:306
版权声明:如需发表此文章,请附带转载标志或原地址链接,谢谢合作 https://blog.csdn.net/weixin_38091140/article/details/82875078
序列解包是一个非常重要和常用的一个功能,使用序列解包可以用非常简洁的方法完成复杂的功能。增强代码的可读性,减少代码量。
1.使用序列解包对多个变量同时进行赋值。
a, b, c = 1, 2, 3print(a, b, c) test_tuple = (False, 3.5, 'test')d, e, f = test_tupleprint(d, e, f) x, y, z = map(str, range(3)) print(x, y, z)
输出结果分别为:
1 2 3
False 3.5 test
0 1 2
2.序列解包也可以适用于列表和字典呢,字典的话默认是对“key”进行操作, 如需对“key”-“value”进行操作则需要使用字典的items()方法进行操作。“value”进行操作的话就使用values()进行操作。**
#列表进行解包a = [1, 2, 3, 5, 6]b, c, d, f, g = aprint(b, c, d, f, g) print('---------------------------') #字典进行解包test_dicts = {'a': 'x', 'b': 1, 'c': 3} q, w, e = test_dictsr, t, y = test_dicts.items()i, o, p = test_dicts.values() print(q, w, e)print(r, y, t)print(i, o, p)
输出:
1 2 3 5 6
a b c
('a', 'x') ('c', 3) ('b', 1)
x 1 3
3,还可以用序列解包同时遍历多个序列
list_1 = [1, 2, 3, 4]list_2 = ['a', 'b', 'c'] for x, y in zip(list_1, list_2): print(x, y)
4,使用内置函数enumerate()返回的的迭代对象进行遍历时的序列解包**。
# 使用enumerate进行遍历(使用.format()进行格式化)x = ['a', 'b', 'c']for i, v in enumerate(x): print('遍历出来的值的下标是{0},值是{1}'.format(i, v))
输出:
遍历出来的值的下标是0,值是a
遍历出来的值的下标是1,值是b
遍历出来的值的下标是2,值是c
5,还支持在实参面前加上一个()号进行序列解包,从而实现将序列中的元素值依次传递给相同数量的形参。*
>>> print(*[1,2,3,4],4,*(5,6))1 2 3 4 4 5 6>>> *range(4),4(0, 1, 2, 3, 4)>>> {*range(4),4,(5,6,7,8,9)}{0, 1, 2, 3, 4, (5, 6, 7, 8, 9)}>>> {*range(4),4,*(5,6,7,8,9)}{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}>>> {'x':1, **{'y':10}}{'x': 1, 'y': 10}>>>
这就是这期的序列解包了。