Python中的解包操作Unpacking

2023年 7月 11日 21.9k 0

解包对应的英文是Unpacking

其实就是把一个容器(列表、元组、集合、字典等)拆开来

1. 解包的方式

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

2. 获取容器里面的元素

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

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

函数传参数

当函数有多个位置参数的时候,可以一个一个传入

也可以用解包的方式传参,示例如下:

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

2.3 获取部分元素

在获取最值的时候,除了max、min等内置函数

还可以在已经排序好的列表上通过解包的方式来获取最值

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

_是一个占位符,在不想写多个变量名、取名字的前提下,可以偷个懒

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}

用两个**是针对字典的

但是字典也可以用一个*来解包,只不过是针对key来解包的

举个例子如下:

>>> a = {"a": 1, "b": 2, "c": 3}
>>> {*a}
{'a', 'b', 'c'}

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论