Python语言入门4.3-python高级之元素的分解
小标 2018-06-20 来源 : 阅读 632 评论 0

摘要:本文主要向大家介绍了Python语言入门的python高级之元素的分解,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。

本文主要向大家介绍了Python语言入门的python高级之元素的分解,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助。

1. 序列分解为单独的变量 
1.1 将一个包含N个元素的元组或者序列分解成为N个单独的变量。 
在python中任何序列或者元素都可以通过一个简单的赋值来分解为单独的变量,唯一的要求是变量的总数和结构要与序列相吻合

p = (4,6,8)

x,y,z = pprint('x is',x)print('y is',y)print('z is',z)

屏幕输出的结果是:

x is 4

y is 6

z is 8

需要注意的是,如果元素的数量不匹配,将得到一个错误的提示:

p = (4,6,8)

y,z = pprint('y is',y)print('z is',z)

错误提示:

Traceback (most recent call last):

  File "D:/home/temp/temp1.py", line 2, in <module>

    y,z = p

ValueError: too many values to unpack (expected 2)

1.2 分解操作丢弃特定的元素值 
实际上不仅仅是元组或者列表,只要对向恰好是可迭代的,那么久可以执行分解操作,包括字符串,文件、迭代器和生成器。

p = 'nihao'

y,z,_,_,_, = pprint('y is',y)print('z is',z)

屏幕输出:

y is n

z is i

事实上,从这个例子中我们也可以看出,如果是想丢弃某一些值,留下我们需要的特定值,我们可以才用一些用不到的变量名,例如_ 。(这不是最好的办法,下面会介绍一种更好的办法)

1. 从任意长度的可迭代对象中分解元素 
2.1 在1中我们发现了从对象中分解出N个元素,如果对象中元素数量大于N,则会抛出‘分解值过多(too many values to unpack)’的异常,python中,我们可以用‘*表达式’来解决这个问题。 
*这个标号在python中表示不确定个数,例如在函数的参数不确定的时候用*args来代替(//blog.csdn.net/jinxiaonian11/article/details/53501305),在元素分解的时候也可以用。

p = 'nihao'y,*q,z = pprint('y is',y)print('q is',q)print('z is',z)

屏幕输出:

y is n

q is ['i', 'h', 'a']

z is o

从例子可以看出,*修饰表达式的时候python处理的办法是将不确定个数的部分用一个列表来表示。很显然需要注意的问题是,这种方法不能再两端都用这种方法:

p = 'nihao'*y,q,*z = pprint('y is',y)print('q is',q)print('z is',z)

屏幕输出:

  File "D:/home/temp/temp1.py", line 2

    *y,q,*z = p

    ^

SyntaxError: two starred expressions in assignment

其实很好理解,python不知道那一部分是确定的,所以无法处理。 
2.2 多个‘*表达式’连用 
有时候需要将多个‘*表达式’连用,以达到更加好的效果。

p = [20,88,'nihao',[7,8,2012]]*y,(*_,z) = pprint('y is',y)print('z is',z)

屏幕输出:

y is [20, 88, 'nihao']

z is 2012

这样就能精确的得到我们想要的元素。从中我们可以发现,一般这样用的场合是需要分解得到的元组在对象的一个还可以在分的对象中(子对象)。

元素分解是在编程中经常遇到的问题,采用这些方法可以是我们的代码精简,可阅读性强。

以上就介绍了Python的相关知识,希望对Python有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程