Python中的解包操作Unpacking

2023-06-0508:27:14编程语言入门到精通Comments1,143 views字数 924阅读模式

解包对应的英文是Unpacking文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

其实就是把一个容器(列表、元组、集合、字典等)拆开来文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

1. 解包的方式

  • • 赋值符号: =
  • • 星号: * 或者 **

2. 获取容器里面的元素

直接拆开,赋值给多个变量

>>> names = ["mike", "jane", "alex"]
>>> mike, jane, alex = names
>>> mike
'mike'
>>> jane
'jane'
>>> alex
'alex'

函数传参数

当函数有多个位置参数的时候,可以一个一个传入文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

也可以用解包的方式传参,示例如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

>>> def add(num1, num2):
...     return num1 + num2
... 
>>> nums = [1, 2]
>>> add(*nums)
3

2.3 获取部分元素

在获取最值的时候,除了max、min等内置函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

还可以在已经排序好的列表上通过解包的方式来获取最值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

>>> max_value, *_, min_value = [6, 5, 4, 3, 2, 1]
>>> max_value
6
>>> min_value
1

_是一个占位符,在不想写多个变量名、取名字的前提下,可以偷个懒文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

3. 合并多个容器

  • • 列表:直接按照顺序附加上去
>>> a = [1, 2, 3]
>>> b = [2, 4]
>>> [*a, *b]
[1, 2, 3, 2, 4]
  • • 元组:和列表表现一致
>>> a = (1, 2, 3)
>>> b = (2, 4)
>>> (*a, *b)
(1, 2, 3, 2, 4)
  • • 集合:会进行去重
>>> a = {1, 2, 4}
>>> b = {2, 4}
>>> {*a, *b}
{1, 2, 4}
  • • 字典:后面的重复的key的值会覆盖前面同样的key的值
>>> a = {"a": 1, "b": 2, "c": 3}
>>> b = {"b": 3}
>>> {**a, **b}
{'a': 1, 'b': 3, 'c': 3}

用两个**是针对字典的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

但是字典也可以用一个*来解包,只不过是针对key来解包的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

举个例子如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html

>>> a = {"a": 1, "b": 2, "c": 3}
>>> {*a}
{'a', 'b', 'c'}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/44457.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/44457.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定