序列解包是一个非常重要和常用的一个功能,使用序列解包可以用非常简洁的方法完成复杂的功能。增强代码的可读性,减少代码量

1.使用序列解包对多个变量同时进行赋值。

a, b, c = 1, 2, 3
print(a, b, c)test_tuple = (False, 3.5, 'test')
d, e, f = test_tuple
print(d, e, f)x, y, z = map(str, range(3))print(x, y, z)

输出结果分别为:

1 2 3
False 3.5 test
0 1 2

2.序列解包也可以适用于列表字典呢,字典的话默认是对“key”进行操作, 如需对“key”-“value”进行操作则需要使用字典的items()方法进行操作。“value”进行操作的话就使用values()进行操作。

#列表进行解包
a = [1, 2, 3, 5, 6]
b, c, d, f, g = a
print(b, c, d, f, g)print('---------------------------')#字典进行解包
test_dicts = {'a': 'x', 'b': 1, 'c': 3}q, w, e = test_dicts
r, t, y = test_dicts.items()
i, o, p = test_dicts.values()print(q, w, e)
print(r, y, t)
print(i, o, p)

输出:

1 2 3 5 6
---------------------------
a b c
('a', 'x') ('c', 3) ('b', 1)
x 1 3

3,还可以用序列解包同时遍历多个序列

list_1 = [1, 2, 3, 4]
list_2 = ['a', 'b', 'c']for x, y in zip(list_1, list_2):print(x, y)

4,使用内置函数enumerate()返回的的迭代对象进行遍历时的序列解包


# 使用enumerate进行遍历(使用.format()进行格式化)
x = ['a', 'b', 'c']
for i, v in enumerate(x):print('遍历出来的值的下标是{0},值是{1}'.format(i, v))

输出:

遍历出来的值的下标是0,值是a
遍历出来的值的下标是1,值是b
遍历出来的值的下标是2,值是c

5,还支持在实参面前加上一个(*)号进行序列解包,从而实现将序列中的元素值依次传递给相同数量的形参。

>>> print(*[1,2,3,4],4,*(5,6))
1 2 3 4 4 5 6
>>> *range(4),4
(0, 1, 2, 3, 4)
>>> {*range(4),4,(5,6,7,8,9)}
{0, 1, 2, 3, 4, (5, 6, 7, 8, 9)}
>>> {*range(4),4,*(5,6,7,8,9)}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> {'x':1, **{'y':10}}
{'x': 1, 'y': 10}
>>>

这就是这期的序列解包了。

序列解包(for x,y in zip(keys, values):)详解。相关推荐

  1. java压缩文件详解_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

  2. SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解

    SpringBoot默认包扫描机制及@ComponentScan指定扫描路径详解 SpringBoot默认包扫描机制 标注了@Component和@Component的衍生注解如@Controller ...

  3. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  4. Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

    封面:洛小汐 作者:潘潘 若不是生活所迫,谁愿意背负一身才华. 前言 上节我们介绍了 < Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 >,内容很详细( ...

  5. linux中gz文件怎么解压,Linux解压gz文件的命令使用教程及详解

    今天小编给带来一篇linux解压方面的资料 Linux解压gz文件的命令有:gunzip命令.gzip命令.tar命令.下面本篇文章就来带大家了解一下 gz文件是一种压缩文件,以.gz或者.tar.g ...

  6. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  7. Object.keys方法详解

    Object.keys方法详解 一.语法 Object.keys(obj) 参数:要返回的对象 返回值:所有可枚举属性的字符串 二.对象处理,返回枚举属性数组 let obj = { name:&qu ...

  8. 古风排版(python实现)(解包转置矩阵)(*号语法和zip的巧用)

    L1-039 古风排版 (20 分) 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数. ...

  9. linux zip/unzip命令详解

    命令名: zip 功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工 作目录>][-ll][-n <字 尾字符串>] ...

  10. python解压文件_Python压缩和解压缩文件(zip/unzip)详解

    通过zipfile模块实现对文件.文件夹的zip压缩和解压 #打包成zip文件 import zipfile f = zipfile.ZipFile('archive.zip','w',zipfile ...

最新文章

  1. php 使用curl模拟登录discuz以及模拟发帖
  2. flutter 移动通知_Flutter移动电商实战 --(24)Provide状态管理基础
  3. windows路径操作API函数
  4. 微软OCR两层优化提升自然场景下的文字识别精度(模式识别新研究)
  5. Docker 常用命令整合!!!带你一起理解和复习每个操作命令!!!带操作图,不会也能看懂的!!
  6. X.509 数字证书结构和实例
  7. php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比
  8. a=a+b和a+=b的区别
  9. 针对Hybrid A*论文解析(5)中的方法的一些验证
  10. 【FLink】Flink Forward Asia Hackathon (2021) 回顾
  11. Acer 4750 安装黑苹果_自己安装黑苹果,其实黑苹果也没那么难~
  12. JAVA基础之n+=1与n=n+1的区别
  13. 使用slf4j和log4j记录日志
  14. 韦东山linux学习之ubuntu 9.10 软件源 问题
  15. PyTorch学习—6.PyTorch数据读取机制Dataloader与Dataset
  16. docker安装gamit_Ubuntu下安装gamit
  17. 6目摄像头照片球面投影变换拼接全景图片
  18. 中标麒麟怎么安装deb包_银河麒麟制作deb安装包
  19. 红米手机html文件,红米手机中ES文件浏览器无法删除SD卡中文件的解决办法-es文件浏览器...
  20. 第几天(c语言实现,两种做法)

热门文章

  1. 手把手教你下载ILSVRC2012(ImageNet2012)分类部分数据集以及使用Pytorch训练
  2. Java 爬取行政区划代码
  3. AVI格式视频文件编码格式缺少编码解释器且该项目的编码格式不受支持(0xc00d5212错误)
  4. IIC总线原理详细解析
  5. C++头文件和cpp文件的原理
  6. MATLAB计算卫星相对位置、速度和加速度
  7. Typecho插件:根据自定时间自动切换主题
  8. uniapp实现语音识别
  9. 数据库的备份与恢复技术
  10. PDF文件太大如何变小?