我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 序列解包的多种形式及用法解析

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 序列解包的多种形式及用法解析

序列解包(Sequence Unpacking)

是Python中非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性,减少了程序员的代码输入量。

例如,可以使用序列解包功能对多个变量同时进行赋值。


>>> x, y, z = 1, 2, 3 #多个变量同时赋值
>>> v_tuple = (False, 3.5, 'exp')
>>> (x, y, z) = v_tuple
>>> x, y, z = v_tuple
>>> x, y, z = range(3)#可以对range对象进行序列解包
>>> x, y, z = map(str, range(3)) #使用迭代对象进行序列解包

序列解包也可以用于列表、字典、enumerate对象、filter对象等等,但是对字典使用时,默认是对字典“键”进行操作,如果需要对“键:值”对进行操作,需要使用字典的items()方法说明,如果需要对字典“值”进行操作,则需要使用字典的values()方法明确指定。

下面的代码演示了列表与字典的序列解包操作:


>>> a = [1, 2, 3]
>>> b, c, d = a #列表也支持序列解包的用法
>>> x, y, z = sorted([1, 3, 2])  #sorted()函数返回排序后的列表
>>> s = {'a':1, 'b':2, 'c':3}
>>> b, c, d = s.items()
>>> b
('c', 3)
>>> b, c, d = s #使用字典时不用太多考虑元素的顺序
>>> b
'c'
>>> b, c, d = s.values()
>>> print(b, c, d)
1 3 2

使用序列解包可以很方便地同时遍历多个序列。


>>> keys = ['a', 'b', 'c', 'd']
>>> values = [1, 2, 3, 4]
>>> for k, v in zip(keys, values):
print(k, v)
a 1
b 2
c 3
d 4

下面代码演示了对内置函数enumerate()返回的迭代对象进行遍历时序列解包的用法:


>>> x = ['a', 'b', 'c']
>>> for i, v in enumerate(x):
print('The value on position {0} is {1}'.format(i,v))
The value on position 0 is a
The value on position 1 is b
The value on position 2 is c

下面对字典的操作也使用到了序列解包:


>>> s = {'a':1, 'b':2, 'c':3}
>>> for k, v in s.items():  #字典中每个元素包含“键”和“值”两部分
print(k, v)
a 1
c 3
b 2

另外,序列解包还支持下面的用法:


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

补充:Python的序列封包和序列解包功能---两种赋值方式实例说明

Python提供了序列封包和序列解包功能,可以实现:

将多个值赋给一个变量时,Python会自动将多个值封装成元组。这个功能就称为序列封包;

允许将序列(元组或者列表等)直接赋值给多个变量,此时序列的各元素被依次赋值给每一个变量,此处要求序列的元素个数和变量个数相等,这个功能就成为序列解包。

例如:

序列封包示例,将1、2、3封装成元组后赋值给nums


>>> nums = 1, 2, 3
>>> print(nums)
(1, 2, 3)
>>> print(nums[1])
2

序列解包,将tuple_temp的各元素依次赋值给a, b, c, d, e


>>> tuple_temp = tuple(range(1, 10, 2))
>>> print(tuple_temp)
(1, 3, 5, 7, 9)
>>> a, b, c, d, e = tuple_temp
>>> print(a, b, c, d, e)
1 3 5 7 9

将序列封包和序列解包同时运用,就可以让赋值运算符支持同时将多个值赋值给多个变量。例如:


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

此处相当于执行了如下过程:

先进行序列封包,将1、2、3封装到元组abc中


abc = 1, 2, 3

再执行序列解包到变量a、b、c中


a, b, c = abc

序列解包时,可以解出部分变量,剩下的依然使用列表变量保存。为了这样操作,Python允许在左边被赋值的变量之前添加“*”,那么该变量就代表一个列表,可以保存多个集合元素,例如:


>>> a, b, *restnum = range(10)
>>> print(a)
0
>>> print(b)
1
>>> print(restnum)
[2, 3, 4, 5, 6, 7, 8, 9]

>>> *frontnum, lastnum = range(10)
>>> print(frontnum)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> print(lastnum)
9

>>> frontnum, *middlenum, lastnum = range(10)
>>> print(frontnum)
0
>>> print(middlenum)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> print(lastnum)
9

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 序列解包的多种形式及用法解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 序列解包的多种形式及用法解析

序列解包(Sequence Unpacking) 是Python中非常重要和常用的一个功能,可以使用非常简洁的形式完成复杂的功能,大幅度提高了代码的可读性,减少了程序员的代码输入量。 例如,可以使用序列解包功能对多个变量同时进行赋值。>>>
2022-06-02

PHP数组的多种形式及用途解析

PHP数组的多种形式及用途解析PHP作为一种流行的服务器端脚本语言,具有强大的数组处理功能,数组是PHP中最常用的数据类型之一。在PHP中,数组可以用来存储一组相关的数据,例如数字、字符串或对象等,同时还可以通过索引或键值来访问其中的元素
PHP数组的多种形式及用途解析
2024-03-13

在python中利用numpy求解多项式以及多项式拟合的方法

在Python中,我们可以使用NumPy库来求解多项式以及多项式拟合。首先,我们可以使用NumPy的`polyval`函数来求解多项式的值。该函数接受两个参数,第一个参数是多项式的系数,以从高次到低次的顺序排列;第二个参数是自变量的值。下面
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录