目录

  • 1️⃣序列
  • 2️⃣序列封包
  • 3️⃣序列解包
  • 4️⃣序列解包的好处
  • 5️⃣序列解包的详解
  • 🟥方式一
  • 🟨方式二
  • 🟩方式三
  • 🟦方式四
  • 🟪方式五
  • 6️⃣序列解包中的特殊符号


python3中解包嵌套序列_解包


1️⃣序列

什么是序列?

  • 所谓序列,指的是一块可以存放多个值的连续内存空间
  • 序列的值按顺序排列,每个元素都有一个编号,我们称之为索引
  • 我们可以通过索引来访问序列的元素
  • Python常见的序列是:列表,元组,字符串

2️⃣序列封包

什么是序列封包?

  • 之前讲过,我们将多个值赋给一个变量,那么这个变量就是一个元组
  • 事实上就是Python将这个变量封装成一个元组
  • 这就是序列封包

实例如下:

>>>a = 'a','b', 'c'
>>>a
   ('a', 'b', 'c')
>>>type(a)
   <class 'tuple'>

3️⃣序列解包

什么是序列解包?

  • 序列解包(Sequence Unpacking)----属于Python赋值语句的一种方法,或者说技巧。
  • 简单地说,序列解包是Python特有的语法,它将可迭代对象给解开,将得到的值存储到一系列变量中。

4️⃣序列解包的好处

  1. 简化代码
  2. 使程序更加简洁
  3. 可读性高
  4. 提高效率
  5. 方便程序员的开发

python3中解包嵌套序列_学习_02


备注:

如果对可迭代对象不够理解,可以看看下面文章:

  • 【python知识点】你知道Iterable对象吗?什么是迭代器?
  • 【python小知识】:什么是生成器

5️⃣序列解包的详解

🟥方式一

🌱 多个变量的同时赋值

>>>a,b,c = 1,2,3
>>>a
   1
>>>b
   2
>>>c
   3
  • 需要注意的是,变量和值的个数必须对应起来,不然就会抛出ValueError异常。

🟨方式二

🌱 交换两个变量的值

>>>a, b = 20, 56
>>>print(a,b)
   20 56
>>>b, a = a, b
>>>print(a,b)
   56 20

🟩方式三

🌱 遍历多个序列

>>>name = ['张三', '李四', '王五']
>>>score = [95,86,92]
>>>for n, s in zip(name,score):
       print(n,s)
...
   张三 95
   李四 86
   王五 92

🟦方式四

🌱 序列切片也可以解包

>>>m
   [1, 2, 3, 4, 5]
>>>m[1 : 4] = 20, 30, 40
>>>m
   [1, 20, 30, 40, 5]

🟪方式五

🌱 将可迭代对象赋给多个变量

例子1:

>>>n = ['a', 'b', 'c']
>>>a,b,c = n
>>>a
   'a'
>>>b
   'b'
>>>c
   'c'

例子2:

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

例子3:

>>>m = enumerate(['one', 'two', 'three'])
>>>a,b,c = m
>>>print(a,b,c)
   (0, 'one') (1, 'two') (2, 'three')

例子4:

>>>m = zip(['one','two', 'three'], [1,2,3])
>>>a,b,c = m
>>>print(a,b,c)
   ('one', 1) ('two', 2) ('three', 3)

6️⃣序列解包中的特殊符号

  • 序列解包中有个特殊符号,即*
  • 它使得一个变量可以获得多个值
  • 这多个值被封装成一个列表

例子1:

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

例子2:

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

例子3:

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

例子4:

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

例子5:

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

例子6:

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

好了,关于序列解包的小知识就看到这。

python3中解包嵌套序列_解包_03

希望文章可以对你有所帮助!