文档章节

零基础学python-10.1 序列赋值高级应用

raylee2015
 raylee2015
发布于 2015/09/17 16:41
字数 700
阅读 5
收藏 0

赋值语句的基本操作在前面的章节已经说到过,现在我们来说说赋值到高级应用

第一节说的是序列赋值

>>> a= 1
>>> b=2
>>> c,d=a,b
>>> c,d
(1, 2)
>>> [c,d]=[a,b]
>>> c
1
>>> c,d
(1, 2)
>>>

上面是一个简单的序列分解赋值语句,注意:在第三行c,d=a,b其实是组成一个元组,右边的值依次赋值给左边的变量

>>> a= 1
>>> b=2
>>> b,a=a,b
>>> a
2
>>> b
1
>>> a,b
(2, 1)
>>>
上面的这种元组使用技巧是经常使用的

而且,上面的技巧不单适合整个元组,而且还适合部分的赋值

>>> (a,b,c)=(1,2,3)
>>> a,b
(1, 2)
>>> b,c
(2, 3)
>>> a,b,c
(1, 2, 3)
>>> a
1
>>>

高级序列赋值语句模式

我们可以使用=将两侧混合相匹配,不过右边元素的数目必须跟左边的一致

>>> a,b,c,d='abcd'
>>> a,b,c,d
('a', 'b', 'c', 'd')
>>> a,b,c='abcd'
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    a,b,c='abcd'
ValueError: too many values to unpack (expected 3)
>>>

>>> a,b,c=string[0],string[1],string[2]
>>> a,b,c
('a', 'b', 'c')
>>> a,b,c=list(string[:2])+[string[2:]]
>>> a,b,c
('a', 'b', 'cd')
>>>

>>> ((a,b),c)=('ab','cd')
>>> a,b,c
('a', 'b', 'cd')
>>>

序列扩展包

在上面我们看到,左右两侧的数目必须一致,但是也是有其他办法打破这个的

我们可以使用*来作为通配符,代表余下的数据项

>>> a,*b='abcd'
>>> a,b
('a', ['b', 'c', 'd'])
>>>
上面的a只是代表第一项,余下的都赋值给b

同理:

>>> *a,b='abcd'
>>> a,b
(['a', 'b', 'c'], 'd')
>>>

>>> *a,b,c='abcd'
>>> a,b,c
(['a', 'b'], 'c', 'd')
>>>
这个序列扩展包对于所有序列类型都有效

>>> a,*b=(1,2,3,4)
>>> a,b
(1, [2, 3, 4])
>>> a,*b=[1,2,3,4]
>>> a,b
(1, [2, 3, 4])
>>>

需要注意的是边界情况,出现这个情况,python自动给超出边界的项赋值空

>>> a,b,c,d,*e=(1,2,3,4)
>>> a,b,c,d,e
(1, 2, 3, 4, [])
>>> a,b,c,d,*e='abcd'
>>> a,b,c,d,e
('a', 'b', 'c', 'd', [])
>>>

还需要注意的是,*符号只能存在一个,而且只有一个变量是不能使用*
>>> a,*b,*c,d,*e='abcd'
SyntaxError: two starred expressions in assignment
>>> a,b,c,d,e='abcd'
Traceback (most recent call last):
  File "<pyshell#46>", line 1, in <module>
    a,b,c,d,e='abcd'
ValueError: need more than 4 values to unpack
>>> *a='abcd'
SyntaxError: starred assignment target must be in a list or tuple
>>>


如果一个变量需要加*,那么必须在变量后面加上逗号,代表后面也跟着一个空变量

>>> *a,='abcd'
>>> a
['a', 'b', 'c', 'd']
>>>

就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录






版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48132253

raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
Python基础总结成千行代码,让Python入门更简单!

只要学会这千行代码,不管你是零基础还是弱基础或是没有接触过编程,都可以快速入门Python!当时我就不信邪啊,等我看完之后,即使作为一个Python老鸟了,还是领会到了很多教授他的独特见解!...

糖宝lsh
2018/09/10
231
0
转行零基础该如何学Python?这些一定要明白!

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。...

猫咪编程
2018/07/21
128
0
零基础学python,看完这篇文章,你的python基础就差不多了!干货【2】

运算符 3.1 算数运算符 是完成基本的算术运算使用的符号,用来处理四则运算,而“+”和“*”还可以用来处理字符串。 3.2 比较(关系)运算符 Python 2.x 中判断 不等于 还可以使用 <> 运算符...

糖宝lsh
2018/11/06
42
0
Python猫荐书系列之七:Python入门书籍有哪些?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/ArN-6mLPzPT8Zoq0Na_tsg 最近,猫哥的 Python 技术学习群里进来了几位比较特殊的同学:一...

豌豆花下猫
05/26
33
0
新手学python,如何才能更快升职加薪,迎娶白富美,走上人生巅峰

最近在问答里发现好多咨询怎么学习python,或者学习难不难的问题,这里给大家提几点建议: 了解自己的目标 我开始学编程的时候,连基础的知识都不知道,小白的很!记得我开始看教材,就是输入...

python教程
2018/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
15分钟前
8
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
9
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部