零基础学python-10.1 序列赋值高级应用
来源:互联网 发布:php 获取网页内容 编辑:程序博客网 时间:2024/04/28 13:01
赋值语句的基本操作在前面的章节已经说到过,现在我们来说说赋值到高级应用
第一节说的是序列赋值
>>> a= 1>>> b=2>>> c,d=a,b>>> c,d(1, 2)>>> [c,d]=[a,b]>>> c1>>> c,d(1, 2)>>>
上面是一个简单的序列分解赋值语句,注意:在第三行c,d=a,b其实是组成一个元组,右边的值依次赋值给左边的变量
>>> a= 1>>> b=2>>> b,a=a,b>>> a2>>> b1>>> a,b(2, 1)>>>上面的这种元组使用技巧是经常使用的
而且,上面的技巧不单适合整个元组,而且还适合部分的赋值
>>> (a,b,c)=(1,2,3)>>> a,b(1, 2)>>> b,c(2, 3)>>> a,b,c(1, 2, 3)>>> a1>>>
高级序列赋值语句模式
我们可以使用=将两侧混合相匹配,不过右边元素的数目必须跟左边的一致
>>> 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-目录
0 0
- 零基础学python-10.1 序列赋值高级应用
- 零基础学python-3.2 变量赋值
- 零基础学python-2.5 变量与赋值
- 零基础 学Python
- 零基础学python-18.9 序列映射函数:map
- 零基础学python-17.4 参数匹配应用实例
- 零基础学python-19.6 生成器函数应用
- "零基础学python"之神奇的python同步赋值及动态特性
- 零基础学python(一)
- 零基础学python(二)
- 零基础学python(三)
- 零基础学python(四)
- 零基础学python(五)
- 零基础学python(六)
- 零基础学python(七)
- 零基础学python(八)
- 零基础学python-目录
- 《零基础学python》习题
- Collection View入门
- Poj2429 inverse of LCM&GCD
- JSP技术(一)
- 道歉还是作秀?余佳文现象背后的冷思考
- 新浪微博第三方Android客户端
- 零基础学python-10.1 序列赋值高级应用
- hihocoder1224赛车(树的深度相关)
- CA解扰
- 防火墙、Iptables、netfilter/iptables、NAT 概述
- 1.介绍shiro框架类关系图
- rust用struct保存特定trait的引用
- 【spring框架】(三)面向切面编程(AOP)
- HDU——1253 胜利大逃亡
- 常用位操作