首页 > 编程语言 >Python中的压缩和解包: '*'、'**'和zip()

Python中的压缩和解包: '*'、'**'和zip()

时间:2024-05-29 16:45:16浏览次数:25  
标签:输出 和解 zip Python zipped 解包 元组 print

python中*用途广泛,除了在数学运算中作为相乘还可以在其它方便扮演者对数据的解包之用途。

*

数学运算中的相乘

对元组/列表的解包

1. 星号*可以用于在解包过程中收集多余的值。例如:

numbers = (1, 2, 3, 4, 5)

# 解包时使用*收集多余的值
a, b, *rest = numbers
print(a)     # 输出: 1
print(b)     # 输出: 2
print(rest)  # 输出: [3, 4, 5]

2. 在函数定义时,结合函数参数表示*args可以传入任意个数的位置参数,例如:

def example(*args):
    print(args)

example(1, 2, 3)  # 输出: (1, 2, 3)

*args会将传入的多个位置参数打包成一个元组。

3. 在使用/调用函数时,*把序列/集合解包(unpack)成位置参数

def add(x, y, z):
    return x + y + z

numbers = (1, 2, 3)
result = add(*numbers)
print(result)  # 输出: 6

*不仅可以用于函数参数解包,还可以用于解包列表或元组,将其元素作为单独的参数传递给函数。

**

数学运算中的幂

对字典的解包

1. 在函数定义中,**kwargs表示可变数量的关键字参数**kwargs会将传入的多个关键字参数打包成一个字典。

def example(**kwargs):
    print(kwargs)

example(a=1, b=2, c=3)  # 输出: {'a': 1, 'b': 2, 'c': 3}

2. 在函数调用时,**可以用于解包一个字典,将其键值对作为独立的关键字参数传递给函数

def display(a, b, c):
    print(a, b, c)

data = {'a': 1, 'b': 2, 'c': 3}
display(**data)  # 输出: 1 2 3

zip()

zip()是python中的内置函数,函数可以将多个可迭代对象(如列表、元组等)组合成一个迭代器,生成包含每个输入可迭代对象对应元素的元组

语法

zip([iterable, ...])

  • iterable -- 一个或多个迭代器;

例子:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped))  # 输出: [(1, 'a'), (2, 'b'), (3, 'c')]

可以使用*操作符来解压缩zip对象。例如,将组合后的元组拆分回原始列表:

zipped = [(1, 'a'), (2, 'b'), (3, 'c')]
unzipped = zip(*zipped)
list1, list2 = map(list, unzipped)
print(list1)  # 输出: [1, 2, 3]
print(list2)  # 输出: ['a', 'b', 'c']

在这个例子中,*zipped[(1, 'a'), (2, 'b'), (3, 'c')]解包成[(1, 2, 3), ('a', 'b', 'c')],然后通过map将结果转换回列表。

 

标签:输出,和解,zip,Python,zipped,解包,元组,print
From: https://www.cnblogs.com/HOI-Yzy/p/18220608

相关文章

  • twrp 刷机包 刷入magisk.zip 构造原理 关键词:META-INF update-binary updater-script
    https://blog.csdn.net/yuleslie/article/details/8718385  #MAGISK##############################################MagiskFlashScript(updater-script)#bytopjohnwu############################################################Preparation#########......
  • Python实用代码片段分享(一)
    在Python编程的旅途中,我们经常会遇到各种问题和挑战。为了帮助大家更高效地编写代码,今天我为大家分享几个实用的Python代码片段。这些代码片段涵盖了从数据处理到文件操作,再到性能优化等多个方面。希望它们能在你的项目中发挥作用!一、数据处理1.列表推导式列表推导式是Pytho......
  • Python中的pyttsx3库:文本到语音转换的利器
    pyttsx3是一个跨平台的文本到语音转换库,它可以在没有安装其他依赖项的情况下在Windows、Linux和macOS上运行。pyttsx3使用系统自带的TTS(文本到语音)引擎,因此可以确保在各种操作系统上都具有较高的稳定性和可用性。官方文档:https://pyttsx3.readthedocs.io/en/latest/https://py......
  • python 基础习题4--分支结构
    1. 判断闰年,输入一个年份,判断该年份是否是闰年,闰年的判断规则如下:(1)能被4整除但不能被100整除的年份是闰年。(2)能被400整除的年份也是闰年。举例来说,2000年是闰年,因为它能被400整除,而1900年不是闰年,因为它能被4整除但却能被100整除。是闰年打印输出“yes”,否则......
  • Java语言,MySQL数据库;SSM 心理咨询预约管理系统19086(免费领源码)计算机毕业设计项目推荐
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3ssm框架介绍1.4论文结构与章节安排2 心理咨询预约管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • 【SCAU操作系统】实验三单处理器系统的进程调度python源代码及实验报告参考
    一、课程设计目的        1.加深对进程概念的理解,明确进程和程序的区别。        2.深入了解系统如何组织进程、创建进程。        3.进一步认识如何实现处理器调度。二、课程设计内容        编写程序完成单处理器系......
  • python3.x中ORM框架SQLObject使用SQLite数据库随笔
    1、如果未安装SQLObject首先要安装,在管理员CMD下,输入如下命令:pipinstallsqlobject2、创建数据库文件,并建立数据库连接,通过修改SQLObject内置的sqlhub的processConnection属性,具体代码如下sqlobject.sqlhub.processConnection=sqlobject.connectionForURI('sqlite:.......
  • Python 列表
    工厂函数list创建列表。更新列表:>>>list=['physics','chemistry',1997,2000]>>>list[2]=2001>>>list['physics','chemistry',2001,2000]删除列表元素:>>>list1=['physics','c......
  • 量化交易:如何在QMT中运行Python策略并在VSCode中高效调试?
    哈喽,大家好,我是木头左!为何选择QMT和VSCode进行量化策略开发?在量化交易的世界里,选择正确的工具与拥有优秀的策略同等重要。调用用VisualStudioCode(简称VSCode)或pycharm,方式都差不多。结合QMT的数据处理能力和VSCode的便捷调试功能,可以极大地提高量化策略的开发效率和质......
  • Python轻量级的插件框架库之pluginbase使用详解
    概要在软件开发中,插件系统是一个常见的需求。插件系统允许开发者动态加载和卸载功能模块,从而提高应用程序的灵活性和可扩展性。Python的pluginbase库是一个轻量级的插件框架,旨在简化插件系统的构建过程。pluginbase库提供了一套简单易用的API,使开发者能够快速集成插件功能。......