首页 > 编程语言 >Python中级之解压赋值

Python中级之解压赋值

时间:2023-12-16 19:11:25浏览次数:34  
标签:解压 变量 多个 Python my 迭代 赋值

解压赋值

【一】解压赋值的概念

  • 解压赋值是指将一个可迭代对象(如列表、元组、字典的键值对等)中的元素拆分并分配给多个变量。
  • 这种技术非常方便,可以简洁地从一个数据结构中提取元素并将它们分配给多个变量。需要确保变量的数量与可迭代对象中的元素数量匹配,否则会引发 ValueError
  • 总之,解压赋值是一种使代码更简洁、可读性更强的技术,用于同时访问可迭代对象中的多个元素。
可迭代对象的概念可以查看一下后面的文章:Python高级之迭代器与生成器 - Lea4ning - 博客园 (cnblogs.com)
不用看生成器,了解一下可迭代对象就可以了

【二】解压赋值与通过多个变量赋值

  • 解压赋值和通过多个变量赋值是两个概念,它们在某种程度上是相关的,但有一些微妙的区别。
  • 多个变量赋值包括了解压赋值,不用在概念上钻牛角尖,解压赋值只是多了***的解包方法

解压赋值与通过多个变量赋值的区别:

  1. 语法:
    • 解压赋值通常使用 *** 运算符。
    • 通过多个变量赋值直接将元素赋值给变量。
  2. 数据类型:
    • 解压赋值适用于可迭代对象,如列表、元组、字典等。
    • 通过多个变量赋值适用于任何可迭代或可索引的数据结构,例如字符串、列表、元组等。

总的来说,解压赋值更强调的是从一个可迭代对象中提取元素并赋值给多个变量,而通过多个变量赋值则更侧重于将整个数据结构中的元素赋值给多个变量。在语法上有一些区别,但在实际使用中,两者可能会交叉使用,具体取决于你的需求和编码风格。

解压赋值:

解压赋值是指将一个可迭代对象(如列表、元组、字典的键值对等)中的元素分别赋值给多个变量。这通常使用 * 运算符(在列表和元组中)或 ** 运算符(在字典中)来实现。

示例:

my_list = [1, 2, [3, 4], {'5': 6}]
a, b, c, d = my_list
print(a, b, c, d)  # 1 2 [3, 4] {'5': 6}


# 通过 ** 为txt解压赋值 并加载到new_dict字典中
txt = {'a':1,'b':2}
new_dict ={}
new_dict.update(**txt)
print(new_dict)

image-20231216185813711

# 而通过解压赋值,我可以直接将数据传入,而不需要挨个进行关键字传参
# 解压赋值,使用 * / ** 的情况不是很多,因为好像 * 的限制很多,很多情况下用不了

通过多个变量赋值:

通过多个变量赋值是指直接将一个数据结构(如字符串、列表、元组等)中的元素赋值给多个变量。这并不涉及到解压操作,而是将整个数据结构赋值给多个变量。

示例:

my_string = "abc"
a, b, c = my_string

my_list = [1, 2, 3]
x, y, z = my_list
  • 实际上,字符串是通过多个变量赋值拿到其中每一个字符的,这就是字符串的可迭代性。当你对字符串进行迭代时,会访问字符串中的每一个字符。
my_string = "abc"
for char in my_string:
    print(char)
txt = 'abc'
a,b,c = txt
print(a,b,c)   # a b c

* 列表解压**字典解压赋值

字符串解压赋值

x, y = '12'
print(x)    # 1
print(y)    # 2

标签:解压,变量,多个,Python,my,迭代,赋值
From: https://www.cnblogs.com/Lea4ning/p/17905194.html

相关文章

  • Python装饰器:深入探索功能增强的神奇工具(特点+应用+举例)
    Python装饰器是一项强大的特性,它允许程序员在不改变函数或类本身的情况下,增加、扩展或修改它们的行为。从日志记录到权限验证,再到性能分析和缓存,装饰器在Python编程中发挥着重要的作用。本文将深入探讨装饰器的各个方面,从基本概念到实际应用,带您领略装饰器的神奇之处。装饰器是Pyth......
  • python高级之生成器
    生成器一、生成器与yield若函数体包含yield关键字,再调用函数,并不会执行函数体代码,得到的返回值即生成器对象defmy_range(start,stop,step=1):print('start...')whilestart<stop:yieldstartstart+=stepprint('end...')g=my_range(0,3)......
  • python爬虫
    #(2)importrequestsurl="https://www.google.cn/"foriinrange(20):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding='utf-8'print(r.text)except:print('')......
  • Python准备之软件开发规范
    软件开发规范【一】常见的开发规范软件开发规范是一组为了保持代码质量、可维护性和协作效率而制定的约定和准则。这些规范通常由开发团队、组织或行业制定,并且在整个软件开发生命周期中都需要遵循。以下是一些常见的软件开发规范:命名规范:使用有意义的变量、函数和类名,遵循......
  • Python 潮流周刊第 31 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-16-weekly以下是本期摘要:......
  • 在linux环境上安装python
    一、环境操作系统:CentOS7.964位Python版本:3.8.2二、安装包:百度网盘地址及提取码:地址:https://pan.baidu.com/s/1P1kSAm_OuAiBZEShJi1XPA 提取码:88ra三、步骤:3.1上传安装包并解压缩mkdir-p/usr/local/python3cd/usr/local/python3tar-zxvfPython-3.8.2.tgz3.......
  • 【纯手工打造】时间戳转换工具(python)
    1.背景最近发现一个事情,如果日志中的时间戳,需要我们转换成时间,增加可读性。或者将时间转换成时间戳,来配置时间。相信大多人和我一样,都是打开网页,搜索在线时间戳转换工具,然后复制粘贴进去。个人认为可以手工打造一个python版本的时间戳转换工具,来解放双手,减少打开网页的时间,于是乎......
  • Python高级之模块导入
    模块导入与包的使用【一】模块与包概要模块(Module):定义:在Python中,模块是一个包含Python代码的文件。这些文件以.py为扩展名,可以包含变量、函数和类等,文件名为xxx.py,模块名则是xxx,导入模块可以引用模块中已经写好的功能。作用:模块提供了一种组织代码的方式,将相关的功......
  • Python学习之十五_不同类型数据库表内容比较
    Python学习只十五_不同类型数据库表内容比较前言最近学习力总结了很多Python相关的内容本次想继续学习一下不同数据库之间的数据比较.这样理论上可以极大的缩减不同数据库测试成本.感谢Python以及之前大拿的各种资料.这个学习还是表简单与单纯.理论上可以通过标准SQL......
  • Python学习之十六_virsh批量获取虚拟机IP地址的方法
    Python学习之十六_virsh批量获取虚拟机IP地址的方法Linux命令说明forjin\$(foriin`virshlist|grep-vId|greprunning|awk'{print$2}'`;\dovirshdumpxml$i|grep"macaddress"|awk-F\''{print$2}'&&e......