【Python小知识】:什么是序列解包

前言
💂作者简介:大家好,我是翼同学
📃个人主页:翼同学的CSDN博客
🔥系列专栏:【python学习笔记】
👏备注:如果文章有误,请指正,万分感谢!让我们一起学习,一起进步。
✅最后:如果文章对您有帮助,请👍三连支持一下博主哦。🤞


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. 方便程序员的开发


备注:

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


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

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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翼同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值