Python--各数据结构解包小例子

简介: Python--各数据结构解包小例子

原文知识库链接:https://www.yuque.com/qinganwubieshi,欢迎关注订阅。

列表解包

a,b,c = [1,2,3]
print(a,b,c)    # 1 2 3

元组解包

a,b,c = (1,2,3)
print(a,b,c)    # 1,2,3

字符串解包

a,b,c = "123"
print(a,b,c)    # 1,2,3

集合解包

a,b,c = {1,2,3}
print(a,b,c)    # 1,2,3

字典解包

a,b,c = {"a":1,"b":2,"c":3}
print(a,b,c)    # a,b,c

生成器解包

a,b,c = (x+1 for x in range(3))
print(a,b,c) # 1,2,3

多元素解包

a, b, *c = [1, 2, 3, 4, 5]
print(a, b, c)  # 1 2 [3, 4, 5]
a, *b, c = [1, 2, 3, 4, 5]
print(a, b, c)  # 1 [2, 3, 4] 5
  • 在某个变量面前加一个星号
  • 而且这个星号可以放在任意变量
  • 每个变量都分配一个元素后,剩下的元素都分配给这个带星号的变量 :::

函数解包

def num(a, b, c):
    print(a, b, c)
num(1, 2, 3)
num(*[4, 5, 6])
num(*(7, 8, 9))
num(*{11, 22, 33})
num(**{"a": 111, "b": 222, "c": 333})
"""
1 2 3
4 5 6
7 8 9
33 11 22
111 222 333
"""

多类型参数解包

def num(a, b, c):
    print(a, b, c)
num(*[4], *(5,), **{"c": 6})
"""
4 6 7
"""

函数元组解包

def name(*args):
    print(args)
    print(*args)
name('清安','拾贰')
"""
('清安', '拾贰')
清安 拾贰
"""

函数字典解包

def name(**kwargs):
    print(kwargs)
    print(*kwargs)
name(name1='清安', name2='拾贰')
"""
{'name1': '清安', 'name2': '拾贰'}
name1 name2
"""

扩充

def name(**kwargs):
    print(kwargs)
    print(kwargs["name1"])
name(**{"name1":'清安',"name2":"拾贰"})
"""
{'name1': '清安', 'name2': '拾贰'}
清安
"""

表达式解包

print(range(3),3)
print(*range(5),5)
print([*range(5)])
print(*[range(5)])
print(*{"a": 111, "b": 222, "c": 333})
print(**{"a": 111, "b": 222, "c": 333})
"""
range(0, 3) 3
0 1 2 3 4 5
[0, 1, 2, 3, 4]
range(0, 5)
a b c
TypeError: 'a' is an invalid keyword argument for print()
"""

解包拼接

列表

list_ = [1,2]
list_1 = range(3,5)
list_2 = [*list_,*list_1]
print(list_2)
"""
[1, 2, 3, 4]
"""

字典

dict1 = {"a": 111, "b": 222, "c": 333}
dict2 = {"d": 444, "e": 555, "f": 666}
dict3 = {**dict1,**dict2}
print(dict3)
"""
{'a': 111, 'b': 222, 'c': 333, 'd': 444, 'e': 555, 'f': 666}
"""

小结

  • 自动解包支持一切可迭代对象
  • 函数调用时,可以用 * 或者 ** 解包可迭代对象
目录
相关文章
|
2天前
|
关系型数据库 Java 分布式数据库
实时计算 Flink版操作报错合集之在使用 Python UDF 时遇到 requests 包的导入问题,提示 OpenSSL 版本不兼容如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
19 5
|
5天前
|
Python Windows
Python分发包安装pip3
Python分发包安装pip3
9 0
|
5天前
|
算法 搜索推荐 C语言
Python实现数据结构与算法
【5月更文挑战第13天】学习数据结构与算法能提升编程能力,解决复杂问题,助你面试成功。从选择资源(如《算法导论》、Coursera课程、LeetCode)到实践编码,逐步学习基本概念,通过Python实现栈、队列和快速排序。不断练习、理解原理,探索高级数据结构与算法,参与开源项目和算法竞赛,持续反思与实践,以提升技术能力。
6 0
|
5天前
|
机器学习/深度学习 算法 数据可视化
Python 数据结构和算法实用指南(四)(4)
Python 数据结构和算法实用指南(四)
10 1
|
5天前
|
机器学习/深度学习 存储 算法
Python 数据结构和算法实用指南(四)(3)
Python 数据结构和算法实用指南(四)
15 1
|
5天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(四)(2)
Python 数据结构和算法实用指南(四)
10 0
|
5天前
|
存储 算法 Serverless
Python 数据结构和算法实用指南(四)(1)
Python 数据结构和算法实用指南(四)
14 0
|
5天前
|
存储 算法 搜索推荐
Python 数据结构和算法实用指南(三)(4)
Python 数据结构和算法实用指南(三)
10 1
|
5天前
|
存储 搜索推荐 算法
Python 数据结构和算法实用指南(三)(3)
Python 数据结构和算法实用指南(三)
10 1
|
5天前
|
存储 算法 前端开发
Python 数据结构和算法实用指南(三)(2)
Python 数据结构和算法实用指南(三)
10 1