python从入门到精通不可逾越的序列解包(文末附赠教程分享)

本文节选自《Python程序设计》

序列解包(Sequence Unpacking)是Python中非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性,减少了程序员的代码输入量。例如,可以使用序列解包功能对多个变量同时进行赋值。

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

序列解包也可以用于列表、字典、enumerate对象、filter对象等等,但是对字典使用时,默认是对字典“键”进行操作,如果需要对“键:值”对进行操作,需要使用字典的items()方法说明,如果需要对字典“值”进行操作,则需要使用字典的values()方法明确指定。下面的代码演示了列表与字典的序列解包操作:

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

下面代码演示了对内置函数enumerate()返回的迭代对象进行遍历时序列解包的用法:

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

另外,序列解包还支持下面的用法:

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

可以说,序列解包的本质就是把一个序列或可迭代对象中的元素同时赋值给多个变量,如果等号右侧含有表达式,会把所有表达式的值先计算出来,然后再进行赋值。下面是一些序列解包的用法:

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

在上面的例子中,a, b = b, a是比较特殊的一个,可以这样理解:先把变量a和b原来的值取出来组成一个元组,然后再把这个元组序列解包赋值给变量a和b。

再例如,下面的代码用来生成斐波那契数列中小于1000的数字:

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

在这段代码中第一行a, b = 1, 1和倒数第二行的a, b = b, a+b都属于序列解包的用法,其中a, b = 1, 1很容易理解,但是很多朋友对a, b = b, a+b这个语句不太理解。这个语句的执行过程是这样的:假设现在a=3和b=5,那么先使用这两个变量原来的值计算等号右侧的元组得到(5, 3+5)也就是(5, 8),然后序列解包赋值给变量a和b,结果是a = 5和b = 8

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

pytyhon学习资料

python从入门到精通不可逾越的序列解包(文末附赠教程分享)

python学习资料

相关推荐