Python赋值、打包和解包,90%人不清楚的知识点!
人生苦短,快学Python!
关于赋值、打包和解包这 3个概念,我觉得有必要做一个分享,因为很多朋友确实不清楚。
如果有这样一个元组t:
>> t = ('foo', 'bar', 'baz', 'qux')
发生这种情况时,就好像元组中的项目已被“打包”到对象中。我们可以通过索引,获取其中的元素。
>>> t
('foo', 'bar', 'baz', 'qux')
>>> t[0]
'foo'
>>> t[-1]
'qux'
如果随后将该“打包”对象分配给新元组,则各个项目将“解包”到元组中的对象中。我们来演示一下:
>>> (s1, s2, s3, s4) = t
>>> s1
'foo'
>>> s2
'bar'
>>> s3
'baz'
>>> s4
'qux'
解包时,左侧的变量数必须与元组中的值数相匹配,否则会报错。
>>> (s1, s2, s3) = t
Traceback (most recent call last):File "<pyshell#16>", line 1, in <module>(s1, s2, s3) = t
ValueError: too many values to unpack (expected 3)>>> (s1, s2, s3, s4, s5) = t
Traceback (most recent call last):File "<pyshell#17>", line 1, in <module>(s1, s2, s3, s4, s5) = t
ValueError: not enough values to unpack (expected 5, got 4)
打包和解包,也可以合并为一个语句以进行复合赋值。
>>> (s1, s2, s3, s4) = ('foo', 'bar', 'baz', 'qux')
>>> s1
'foo'
>>> s2
'bar'
>>> s3
'baz'
>>> s4
'qux'
同样,赋值左侧元组中的元素数量必须等于右侧的数量。
>>> (s1, s2, s3, s4, s5) = ('foo', 'bar', 'baz', 'qux')
Traceback (most recent call last):File "<pyshell#63>", line 1, in <module>(s1, s2, s3, s4, s5) = ('foo', 'bar', 'baz', 'qux')
ValueError: not enough values to unpack (expected 5, got 4)
在像这样的赋值和少数其他情况下,Python允许省略通常用于表示元组的括号。
>>> t = 1, 2, 3
>>> t
(1, 2, 3)>>> x1, x2, x3 = t
>>> x1, x2, x3
(1, 2, 3)>>> x1, x2, x3 = 4, 5, 6
>>> x1, x2, x3
(4, 5, 6)>>> t = 2,
>>> t
(2,)
编程时经常有两个变量需要交换其值。在大多数编程语言中,有必要在交换发生时将其中一个值存储在临时变量中,如下所示:
>>> a = 'foo'
>>> b = 'bar'
>>> a, b
('foo', 'bar')>>> temp = a
>>> a = b
>>> b = temp>>> a, b
('bar', 'foo')
在 Python 中,交换可以通过单个元组赋值来完成。
>>> a = 'foo'
>>> b = 'bar'
>>> a, b
('foo', 'bar')>>> a, b = b, a>>> a, b
('bar', 'foo')
这种操作语法足够精简,是Java等语言,无法比拟的。
各位伙伴们好,詹帅本帅搭建了一个个人博客和小程序,汇集各种干货和资源,也方便大家阅读,感兴趣的小伙伴请移步小程序体验一下哦!(欢迎提建议)
推荐阅读
牛逼!Python常用数据类型的基本操作(长文系列第①篇)
牛逼!Python的判断、循环和各种表达式(长文系列第②篇)
牛逼!Python函数和文件操作(长文系列第③篇)
牛逼!Python错误、异常和模块(长文系列第④篇)
Python赋值、打包和解包,90%人不清楚的知识点!相关推荐
- Python从入门到实践:打包和解包(*和**)的使用
目录 一.打包参数 二.解包参数 三.几点注意 *和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一.打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组 ...
- python基础第五课--从字符串中打包和解包大整数(小白piao分享)
#4.从字符串打包和解包大整数 #将一个字符串解包成一个大整数,将一个大整数打包成一个字符串 #4.1 解决方案: #假设程序需要处理一个有16个元素的字节串,其中保存着一个128位的大整数 data ...
- rtp h264打包和解包
1.学习思路 在了解rtp对h264数据的打包之前,需要对rtp.h264的一些基本概念有一个初步的了解,然后再使用rtp对h264的打包解包做解析 2.rtp认知 实时传送协议(Real-time ...
- android 根目录 文件 打包,Android image文件的打包和解包
Android image文件的打包和解包 平台:msm8909+android5.1 用file *查看img文件的类型: 图1 Ramdisk.img和ramdisk-recovery.img为g ...
- [oeasy]python0019_ 打包和解包_struct_pack_unpack
打包和解包 回忆上次内容 ASCII 由这样几类字符构成 英文大写字符 英文小写字符 数字 符号 电报时代对于英文.数字的编码 使用的是摩斯电码 这摩斯电码是3进制的编码方式 长短空 怎么演化成asc ...
- linux打包文件命令行,Linux 命令行 | 打包和解包命令
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar fName (单个文件打包) tar cvf FileName.tar f ...
- Java 集合之自动打包和解包以及泛型
自动打包与解包: 泛型: 上栗子: TestMap1.java: package com.zhj.www; import java.util.*;public class TestMap {publi ...
- pak文件的打包和解包
pak格式的文件 一般游戏有资源 游戏素材会打包放进去 比如游戏语音 游戏多加点语音 多加一些贴图资源 外部文件实现的 素材--->pak文件--->用的时候从文件中取出来 文件的打包 ...
- linux下打包和解包、解压和压缩
常用Linux 命令: 解压缩tar命令 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) 压 ...
最新文章
- 坑爹的Python陷阱(避坑指南)
- Single molecule real-time (SMRT) sequencing comes of age: applications and utilities for medical dia
- oracle安装出现getproces,oracle安装问题
- [css] 写一个动画,向上匀速移动100px,向下以1.5倍速度移动200px,一直反复循环
- python直方图教程_python如何画直方图
- logstash_output_mongodb插件用途及安装详解
- L1-023 输出GPLT (20 分) — 团体程序设计天梯赛
- 自考计算机软件基础真题,2019年4月自考计算机软件基础考试真题试卷
- 呼叫中心系统建设方案
- Java一般操作 对象序列化和反序列化
- Python—猫眼电影票房爬虫实战 轻松弄懂字体反爬!
- 计算机基础知识之工作总结,计算机教师工作总结(精选3篇)
- 速读原著-TCP/IP(子网寻址)
- ubuntu16.04安装Preempt RT实时内核
- 小程序picker用法
- 洛谷P5594-【XR-4】模拟赛(模拟)
- 台达PLC与单片机的通讯
- EtherCAT运动控制卡小线段前瞻的连续插补运动
- 太原网络营销师郭文军揭秘2016营销如何做?
- 鸿蒙(harmonyOS)应用开发-真机设备API版本查看
热门文章
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
- MySQL导出数据遇到secure-file-priv问题的解决方法
- ELK实时日志分析平台环境部署--完整记录
- Vue的axios与ajax的区别:axios是对ajax的封装
- Mysql水平分表-merge
- matlab识别图像,基于MATLAB神经网络图像识别的高识别率代码
- wxpython动态实时绘图_wxPython: 简单的绘图例子
- 用qss 来控制qlabel显示字体的位置_Word表格总填不好,这些技巧轻松来拯救
- matlab绘制蜂窝,PPT技巧:如何快速设计蜂窝表达的图形设计?
- 慢查询工具percona安装