一、序列解包

序列解包(或可迭代对象解包):解包就是从序列中取出其中的元素的过程,将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中。

一般情况下要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常。但如果要解包序列元素个数与左边变量数不同的情况下,可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同,还可将带星号的变量放在任何位置。赋值语句的右边可以是任何类型的序列,但带星号的变量最终包含的总是一个列表。在变量和值的个数相同时亦如此。这种解包方式也可用于函数参数列表中。

举例:>>>l,s,t,d=['a','bc','de'],'abcd',(1,2,3),{1:'a',2:'b'} #定义4个列表、字符串、元组和字典变量;

>>>l1,l2,l3=l? #用l1、l2、l3解包列表,l1,l2,l3分别得到值'a', 'bc', 'de';

>>>s1,*s2,s3=s #用s1、s2、s3解包字符串,s1,s2,s3分别得到值'a', ['b', 'c'], 'd',注意星号的使用;

>>>t1,*t2=t #用t1、t2解包元组,t1,t2分别得到值1, [2, 3];

>>>d={i:chr(ord('a')+i) for i in range(5)}? #d={0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}

>>>d1,*d2,d3=d? #d1=0,d2=[1,2,3],d3=4,这个解包得到的是字典的键,不是字典项

执行结果如下

上面代码中,要得到字典的键和值,可以使用:k,v=d.popitem() #k=4, v='e'。

二、复杂序列解包

上面介绍的序列解包所举例子是一种比较简单的情况,即序列中的元素类型不是容器类型,但如果出现序列中的元素也是序列,此时需要使用复杂序列解包。 复杂序列解包是在序列中内嵌序列的情况下,解包语句的左边也可以包含对应序列,从而对序列中的序列进行解包。看下面的例子:>>>a,[b,c],*d=(1,(2,3),4,5)

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

以上两个语句执行后,a,b,c,d对应的值都是对应为:1, 2, 3, [4, 5]>>>a,(b,*c),*d=(1,[2,3,10],4,5)

解包后,a,b,c,d对应的值分别为:1, 2, [3, 10], [4, 5]>>>a,(b,c,e),*d=(1,[2,3,{10,11}],4,5)

解包后,a,b,c,d,e对应的值分别为:1, 2, 3, [4, 5], {10, 11}

三、链式赋值

链式赋值是用一行语句将多个变量赋值为同一个值,语法如下:

变量1=变量2=变量n=赋值表达式

该语法实际执行效果类似于:

变量n=赋值表达式

变量2=变量n

变量1=变量2

这种执行效果表示所有变量都指向同一个对象。

注意:上面部分关于赋值顺序的描述错误,感谢博友Johnny592的提醒,为了让看到本文的人加深印象,老猿没有直接修改这部分内容,而是在此说明,并另外在博文《关于链式赋值的赋值顺序问题》中进行了详细说明。

四、链式比较

链式比较就是在一个比较语句中部使用逻辑运算符直接判断某个数据是否在某区间,如:if ?0=

python 链式比较 2._特色的Python序列解包、链式赋值、链式比较相关推荐

  1. python中序列解包_Python3 序列解包

    转载自:https://blog.csdn.net/yilovexing/article/details/80576788 序列解包是 Python 3.0 之后才有的语法 什么是序列解包呢?先看一个 ...

  2. python将字符串逆序_为什么说Python是一门伟大的入门语言?(附免费教程)

    Python 是一门伟大的入门语言.作为一门伟大的编程语言,一定要具备一些特征,其中有五项特征是非常重要的: 非常棒的首次体验:就像书的开始,首先一定要能够"沉迷",学习新知识一定 ...

  3. [转载] python中的且语句_简单探讨python中的语句和语法

    参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...

  4. python 序列解包(解压缩)

    所学的解压缩 如果我们给出一个列表,我们需要一次性取出多个值,我们是不是可以用下面的方式实现呢? name_list = ['nick', 'egon', 'jason'] x = name_list ...

  5. python *args和**kwargs以及序列解包

    DAY 8. *args和**kwargs *args:多值元组,**kwargs多值字典,他们是python函数传参时两个特殊的参数,args和kwargs并不是强制的,但习惯使用这两个,如果在函数 ...

  6. python序列解包求水仙花数_790.琉璃菜的糖浆欠火或过火,都会影响成品的( )。

    [填空题]kidney [填空题]管,隧道 [其它]1.随机产生20个1-100的整数, 并创建列表,用切片提取偶数位置的元素 2.随机产生5个元素( 0,1,2,3,4),然后对1,3元素进行4次方 ...

  7. python正确的赋值语句-Python 赋值语句技巧之序列解包

    python赋值语句技巧之序列解包sequence unpacking,是python语言赋值语句的一种技巧方法,在给多个python 变量命名同时赋值时是很有效率的一种方法. 赋值语句序列解包概念 ...

  8. 微课|中学生可以这样学Python(5.7节):序列解包

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第5章  Python序列及应用 5.7  序列解包 京东购买链接:https://item.jd ...

  9. 详解Python序列解包(5)

    如果一个函数需要以多种形式来接收参数,定义时一般把位置参数放在最前面,然后是默认值参数,接下来是一个星号的可变长度参数,最后是两个星号的可变长度参数:调用函数时,一般也按照这个顺序进行参数传递.调用函 ...

最新文章

  1. js取一定范围内的随机整数
  2. MATLAB中的分类器
  3. C语言中流程图的主要作用是,C语言 三大流程控制
  4. Linux内核模块的概念和基本的编程方法
  5. vue-element-admin中 vuex 的使用
  6. 信安教程第二版-第21章网络设备安全
  7. Python中字典的增、删、查
  8. Angular通过XHR加载模板而限制使用file://(解决方案)
  9. 使用JS导出表格为Excel
  10. swconfig iwpriv iwinfo iwlist iwconfig
  11. 数学表达式Round2
  12. cousera视频无法加载
  13. install Wine + 迅雷 in Fedora 31
  14. 【html标签复习】
  15. C++题目:因数最多
  16. 励销云全流程智能销售解决方案,助力B2B企业高效增长
  17. 2021年前端校招面试题整理
  18. 真正开源的商城源码推荐
  19. 【JAVA程序设计】(C00067)基于SSM(非maven)图书馆座位预约管理系统
  20. Weblogic新建服务,Adminserver下新建server

热门文章

  1. 30天敏捷结果(30):提升敏捷结果
  2. oracle Database 10g后:闪回表
  3. Bitcoin.com| 比特币现金在澳大利亚的零售支出大幅超过BTC
  4. Java XML解析器
  5. vue-cli构建项目
  6. WPF ComboBox_SelectionChange事件中获取当前文本的方法
  7. Python数组合并
  8. curl 命令行下载工具使用方法小结
  9. Maven3路程(三)用Maven创建第一个web项目(1)
  10. C#多态性-抽象类对象引用子类实例