ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python3 序列解包

2022-04-10 12:00:08  阅读:176  来源: 互联网

标签:... list 解包 ABCDEFGH 序列 Python3 赋值


Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 中特别实用的语法序列解包(序列解包是 Python 3.0 之后才有的语法)。
那什么是序列解包呢?先看一个例子:

    >>> a, b, c = 1, 2, 3
    >>> a
    1
    >>> b
    2
    >>> c
    3
    >>> 

这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中。
解包的使用还可以更有逼格,可以利用 * 表达式获取单个变量中的多个元素,只要它的解释没有歧义即可。
* 获取的值默认为 list
# 获取剩余部分:

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

# 获取中间部分:

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

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

    >>> a, b, *c = 0, 1
    >>> a
    0
    >>> b
    1
    >>> c
    []

    >>> a, *b, c = 0, 1
    >>> a
    0
    >>> b
    []
    >>> c
    1

# 嵌套解包

    >>> (a, b), (c, d) = (1, 2), (3, 4)
    >>> a
    1
    >>> b
    2
    >>> c
    3
    >>> d
    4
    >>> 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://blog.csdn.net/yilovexing/article/details/80576788

 

标签:...,list,解包,ABCDEFGH,序列,Python3,赋值
来源: https://www.cnblogs.com/emanlee/p/16125250.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有