当前位置:脚本大全 > > 正文

python序列化图解(对Python3 序列解包详解)

时间:2022-03-28 01:43:26类别:脚本大全

python序列化图解

对Python3 序列解包详解

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

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • >>> a, b, c = 1, 2, 3
  • >>> a
  • 1
  • >>> b
  • 2
  • >>> c
  • 3
  • >>>
  • 这种方法并不限于列表和元组,而是适用于任意序列类型(甚至包括字符串和字节序列)。只要赋值运算符左边的变量数目与序列中的元素数目相等,你都可以用这种方法将元素序列解包到另一组变量中。

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

    * 获取的值默认为 list

    # 获取剩余部分:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • >>> a, b, *c = 0, 1, 2, 3
  • >>> a
  • 0
  • >>> b
  • 1
  • >>> c
  • [2, 3]
  • # 获取中间部分:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • >>> a, *b, c = 0, 1, 2, 3
  • >>> a
  • 0
  • >>> b
  • [1, 2]
  • >>> c
  • 3
  • # 如果左值比右值要多,那么带 * 的变量默认为空

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • >>> a, b, *c = 0, 1
  • >>> a
  • 0
  • >>> b
  • 1
  • >>> c
  • []
  • >>> a, *b, c = 0, 1
  • >>> a
  • 0
  • >>> b
  • []
  • >>> c
  • 1
  • # 嵌套解包

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • >>> (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',要输出下列格式:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 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 来判断,为空,则退出循环

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • >>> 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 []
  • 上面的处理,可以用序列解包的方法会来处理。序列解包,在赋值时无疑更方便、更简洁、更好理解、适用性更强!

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

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • >>> 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 []
  • 以上这篇对Python3 序列解包详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/yilovexing/article/details/80576788

    上一篇下一篇

    猜您喜欢

    热门推荐