博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3 序列解包
阅读量:4676 次
发布时间:2019-06-09

本文共 1541 字,大约阅读时间需要 5 分钟。

转载自:https://blog.csdn.net/yilovexing/article/details/80576788

 

序列解包是 Python 3.0 之后才有的语法

什么是序列解包呢?先看一个例子:

>>> a, b, c = 1, 2, 3>>> a1>>> b2>>> c3>>>

这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,

你都可以用这种方法将元素序列解包到另一组变量中。

解包的使用还可以利用 * 表达式获取单个变量中的多个元素,只要它的解释没有歧义即可。

* 获取的值默认为 list

# 获取剩余部分:

>>> a, b, *c = 0, 1, 2, 3>>> a0>>> b1>>> c[2, 3]

 

# 获取中间部分:

>>> a, *b, c = 0, 1, 2, 3>>> a0>>> b[1, 2]>>> c3

 

# 如果左值比右值要多,那么带 * 的变量默认为空

>>> a, *b, c = 0, 1>>> a0>>> b[]>>> c1
>>> a, b, *c = 0, 1>>> a0>>> b1>>> c[]

 

# 嵌套解包

>>> (a, b), (c, d) = (1, 2), (3, 4)>>> a1>>> b2>>> c3>>> d4>>> a, b, c, d(1, 2, 3, 4)

 

接下来实战一下,假如一个字符串 'ABCDEFGH',要输出下列格式:

A ['B', 'C', 'D', 'E', 'F', 'G', 'H']B ['C', 'D', 'E', 'F', 'G', 'H']C ['D', 'E', 'F', 'G', 'H']D ['E', 'F', 'G', 'H']E ['F', 'G', 'H']F ['G', 'H']G ['H']H []

即每次取出第一个作为首,然后的字符串拆成列表,放置在后面

一般的处理过程是:

1. 将切片中索引为 0 的字符赋值给 a

2. 将切片中索引为 1 之后字符再赋值给 s

3. 用 list 函数将字符串转变为列表

4. 用 while 循环来 s 来判断,为空,则退出循环

 

>>> s = 'ABCDEFGH'>>> while s:...     x, s = s[0], list(s[1:])...     print(x, s)... A ['B', 'C', 'D', 'E', 'F', 'G', 'H']B ['C', 'D', 'E', 'F', 'G', 'H']C ['D', 'E', 'F', 'G', 'H']D ['E', 'F', 'G', 'H']E ['F', 'G', 'H']F ['G', 'H']G ['H']H []

上面的处理,可以用序列解包的方法会来处理。序列解包,在赋值时无疑更方便、更简洁、更好理解、适用性更强!

运用序列解包的功能重写上面的代码:

>>> s = 'ABCDEFGH'>>> while s:...     x, *s = s...     print(x, s)... A ['B', 'C', 'D', 'E', 'F', 'G', 'H']B ['C', 'D', 'E', 'F', 'G', 'H']C ['D', 'E', 'F', 'G', 'H']D ['E', 'F', 'G', 'H']E ['F', 'G', 'H']F ['G', 'H']G ['H']H []

 

转载于:https://www.cnblogs.com/FengZeng666/p/9746776.html

你可能感兴趣的文章
使用hex6x 进行十六进制转换
查看>>
第一章 用标准I/O函数将标准输入复制到标准输出 1-3
查看>>
Remove Mapping
查看>>
NSLog打印信息的从新设置
查看>>
关于TCP/IP与数据传输
查看>>
用Python监视进程是否结束
查看>>
[转] 对WM_NCHITTEST消息的了解+代码实例进行演示
查看>>
方程整数解-2015省赛C语言A组第一题
查看>>
flask环境配置
查看>>
WEB应用的安全的登录认证
查看>>
C#网络编程.套接字.TcpListener.TcpClient
查看>>
Day3 02判定两个对象的引用是否相同
查看>>
极光推送
查看>>
PCB MongoDB 监控
查看>>
springmvc接收JSON类型的数据
查看>>
mybatis配置文件详解
查看>>
Objective-C plist文件与KVC 的使用
查看>>
jqGrid(2)
查看>>
杂题 UVAoj 107 The Cat in the Hat
查看>>
关于jquery-weui.js中时间控件datetimepicker的使用
查看>>