Python可迭代对象(2)

目录

3。字典

字典的构造

字典的添加和修改

字典推导式的使用

以上全部代码编译结果展示

字典复习

4。集合(set)

集合的创建

集合的运算

集合的添加和删除元素

以上全部代码的编译结果

序列解包(Sequence unpacking)


3。字典

字典的构造

#字典(dict)---map的简化版
# ◆ 字典dict是无序、可变序列。所有的元素放在一对大括号{}中。
# ◆ 字典的每个元素是用冒号分隔的键值对,即:key : value,元素之间用逗号分隔。#好,经典的KV模型,通过C++的map的学习可以猜想会不会也是通过K的值来取V的值
# ◆ 字典中的每个key都是唯一的且只能为不可变数据 (如数字、字符串、元组等)。而
# value可以是任意类型的对象。
# ◆ 字典创建:通过花括号 {} 或 dict() 函数来创建字典。
# ◆ 字典的应用场景很广泛,如,通过学号获取学生姓名,通过水果名称获取价格等。
# ▪以键作为下标可以读取字典元素,若键不存在则抛出异常。
# ▪使用get()方法获取指定键对应的值,当键不存在的时候返回None或指定值。
# ◆ items()方法可以返回字典所有的元素。
# ◆ keys()方法可以返回字典所有的“键”。
# ◆ values()方法可以返回字典所有的“值”


ret1 = dict({'apple' : 1, 'banana' : 2, 'peach' : 5, 'pear' : 3})#字典创建:通过dict() 函数来创建字典。
ret2 = {'apple' : 1, 'banana' : 2, 'peach' : 5, 'pear' : 3}#字典创建:通过花括号 {}, 可以看出dict()函数又是一个很鸡肋的东西
print(f"{ret2['apple'] = }")#字典就是通过K的值来取到V的值的,所有就是K(键)V(值)模型,这里的K值就是类似于V的下标一样的东西
print(f"{ret2['apple']}")
# ▪使用get(K,(V))方法获取指定键K对应的值V,当键不存在的时候返回None或指定值。
print(ret2.get('orange'))
print(ret2.get('orange', 0))
print(ret2.get('orange', 2))#当使用get取值时强制给不存在的键赋一个值时,就不会打印None了,因为这样会默认给了一个键值,这样就有键值了然后打印这个键值作为返回值
print(ret2.get('pear'))
print(ret2.get('pear', 7))#当使用get取值时强制给有键值的键赋一个新的值是没有用的,不会打印这个新的值仍会打印这个旧值
print(ret2.values())#打印全部键值的V,有一个s
print(ret2.keys())#打印全部键值的K,有一个s
# ◆ items()方法可以返回字典所有的元素
print(f'{ret2.items() = }')

字典的添加和修改

# ◆当用指定键为字典赋值时,执行结果分两种情况:
# 1)若键存在,则可以修改该键的值;
# 2)若键不存在,则添加该键:值对。
# ◆ 使用update()方法将另一个字典的键 : 值对,添加到当前字典对象。
# ◆ del:删除键值对,或删除字典。 例:del my_dict [‘age’];或 del my_dict
# ◆ clear()方法:清空字典中所有元素。例:my_dict.clear() # 清空字典
# ◆ pop(key)方法:删除并返回指定键的值。例:my_dict.pop('banana')
# ◆ popitem()方法:删除并返回字典中最后的key:value对。无参数。例:myDict.popitem()


ret3 = {'apple' : 1, 'banana' : 2, 'peach' : 5, 'pear' : 3, 'orange' : 6}
ret2.update(ret3)#update的作用是将()里面的字典的键值对更新到调用此函数的字典中,要求更新过去的字典的键值对必须比待更新的
print(ret2) #字典的键值对多,否则更新了不会有什么变化
ret3.update(ret2)
print(ret3)
del ret3['apple']#del:删除键值对,或删除字典, 删除K的值,V就跟着没有了,这两个是绑定关系
print(ret3)
print(ret3.pop('pear'))#pop(key)方法:删除并返回指定键的值。
print(ret3)
ret3.popitem()#popitem()方法:删除并返回字典中最后的key:value对。无参数。
print(ret3)
print("/")
#popitem()实例
ret4 = {}
ret4['apple'] = 3#增加元素
ret4['grtrbb'] = 4
ret4['ecrvv'] = 5
ret4['trvvb'] = 6
ret4['axcwe'] = 7
ret4['jvgbhibh'] = 8
ret4['dhhchbhv'] = 9
print(ret4)
ret4['dhhchbhv'] = 10
print(ret4)
for i in range(7):
ret4.popitem()
print(ret4)

字典推导式的使用

# 字典推导式:是基于现有可迭代对象创建新字典的简洁方法
# ◆ 格式:{key : value for (key, value) in iterable [if condition]}
#KV作为一个整体元素进行范围for的循环

numbers = [1, 2, 3, 4, 5]
nums = {i : i for i in numbers}#不要写成(i,i) in ---, 因为这里对于KV来说只有一个变量i, 由于返回值是字典,目的也是要生成一个字典,所有最外面有一个{}
nums2 = {i : i**2 for i in numbers}#i : i**n---为所有键值的K和V都乘n倍
print(nums)
print(nums2)

nums3 = {i : i for i in numbers if i % 2 == 0}#for前面的是每次循环里面的操作
print(nums3)
nums4 = {i : i for i in numbers if i % 2 != 0}
print(nums4)

以上全部代码编译结果展示

字典复习

4。集合(set)

集合的创建

#集合(set)
# ◆Set:是无序、可变序列,使用{ }界定,元素不可重复,用于存储一组唯一的值。
# ◆创建:使用大括号 {} 或 set() 函数创建


ret1 = {1, 2, 3, 4, 5, 6}
ret2 = set({1, 2, 3, 8, 9, 55, 78})
print(ret1)#打印时发现,在打印集合时是默认元素升序排列的
print(ret2)

集合的运算

# ◆集合运算(Set operations):(了解)
# ➢set1.union(set2): 返回两个集合set1和set2的并集,即两集合的全部元素。
# ➢set1.intersection(set2): 返回两个集合的交集,即两集合的公共元素。
# ➢set1.difference(set2): 返回两个集合的差集。即 set1- set2 的结果。

ret5 = ret3.union(ret4)
print(ret5)
ret6 = ret3.intersection(ret4)
print(ret6)
ret7 = ret3.difference(ret4)
print(ret7)
ret8 = ret4.difference(ret3)
print(ret8)
#ret8和ret7集合的元素不一样
#由于这些集合的计算函数比较难记,所以更推荐直接使用数学符号

print(ret3 & ret4)#&等价于intersection()
print(ret3 | ret4)#|等价于union()
print(ret3 - ret4)#-等价于difference()
print(ret4 - ret3)

集合的添加和删除元素

# ➢ 添加元素(Add elements):
# ✓ mySet.add(x): 向集合mySet中添加单个元素x
# ✓ mySet.update(set1): 将集合set1中的元素添加到集合mySet中。
# ➢ 移除元素(Remove elements):
# ✓ myDict.remove(x): 移除集合中的指定元素x,若x不存在会引发KeyError。
# ✓ myDict.discard(x): 移除集合中的指定元素x,若x不存在不会引发错误。

#添加元素(Add elements):
ret2.add(7)
print(ret2)
ret2.add(3)#插入已有的元素时,就相当于没有插入
print(ret2)
ret2.update(ret1)
print(ret2)#只会插入代插入集合中没有的元素

ret2.remove(1)
print(ret2)
#ret2.remove(100)#若x不存在会引发KeyError
print(ret2)
ret2.discard(78)
print(ret2)
#ret2.discard(100)#若x不存在不会引发错误
print("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh")
ret3 = {3, 4, 5, 6, 7}
ret4 = {6, 7, 8, 9, 10}

以上全部代码的编译结果

5。序列解包(Sequence unpacking)

#2.5 序列解包(Sequence unpacking)
# ◆ 概念:序列解包可同时将序列中的元素解包到多个变量中,使代码更简洁。
# ◆ 语法:variable1, variable2, ... = sequence
# ➢ 例,person = ("John", 25, "USA") # 定义一个元组
# ➢ name, age, nationality = person # 序列解包,将元素分配给对应的变量
# ◆ 注意:序列解包时,左侧变量数与右侧元素数需相等,否则引发 ValueError异常。
# ◆ 星号*操作符:用 * 可将序列中任意数量的元素分配给一个变量,适合处理长度可变的序列。
# ➢ 例如:first, *rest = [1, 2, 3, 4, 5]


numbers = [1, 2, 3, 4, 5, 6, 7]
first, *rest, last = numbers#也就是说在序列解包中当解包到的对象带了一个*,就说明这个带了*的解包对象是和待
print(first) #解包序列同样类型的变量,为长度可变的序列,长度取决于解包对象的个数,带*的解包对象只能有一个
print(rest) #前面没有带*的就只能解包出一个元素
print(last)
print()
numbers2 = [1, 2, 3, 4, 5, 6, 7]
first, *rest, last, wwfrf, eefwf, wwqeef, efqff = numbers2
print(first)
print(rest)
print(last)
print(wwfrf)
print(eefwf)
print(wwqeef)
print(efqff)
#以上解包出7个对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148774.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】 16.1 加速失效时间回归 1.算子介绍 加速失效时间回归模型Accelerated failure time (AFT)是一个监督型参数化的回归模型,它可以处理删失数据。它描述了一个生存时间的对数模型,所以它通…

Pygame中Sprite实现逃亡游戏1

在《Pygame中Sprite类实现多帧动画》系列中,通过pygame中的sprite类(精灵类)实现了多帧动画。在该动画的基础上,可以来实现一个逃亡游戏,如图1所示。 图1 逃亡游戏效果 从图1中可以看出,玩家被飞龙追赶&am…

【树莓派】python3程序获取CPU和GPU温度

前言代码以及展示总结 前言 来来来,先放参考文献 如何检查树莓派的温度⇨这个是通过两种指令获取温度,和我之前设置的状态栏显示有点大同小异。 读取树莓派4B处理器(CPU)的实时温度⇨这个也是指令 下面两个是代码了 树莓派实现温度监控并控制风扇散热 获…

powerBi -L4-分组求和

有如下的表格&#xff1a;我们想统计 不同商品的销售次数&#xff0c;根据商品ID进行分类&#xff0c;统计不同ID出现的次数 1.新建列&#xff1a; 2.输入如下的公式 分组统计序列 COUNTROWS(FILTER(数据源,[商品类别]EARLIER(数据源[商品类别])&&[索引]<EARLIE…

3.2 USART 通用同步/异步收发器

文章目录 什么是USARTUSART框图 stm32的Usart串口收发配置初始化发送接收 重定向的几种方法串口发送数据包 什么是USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步收发器USART是STM32内部集成的硬件外设&#xff0…

李沐 模型选择、过拟合和欠拟合相关代码【动手学深度学习v2】

多项式回归 生成数据集 给定x,我们将使用以下三阶多项式来生成训练和测试数据的标签: y=5+1.2x−3.4+5.6+ϵ where ϵ∼( ). 噪声项ϵ服从均值为0且标准差为0.1的正态分布。 在优化

深入了解通用漏洞评分系统(CVSS)

1. 前言 在当今数字化的时代&#xff0c;网络安全问题日益凸显&#xff0c;漏洞的发现和评估成为保障系统安全的关键环节。而通用漏洞评分系统&#xff08;CVSS&#xff09;作为一种广泛应用的漏洞评估标准&#xff0c;对于准确衡量漏洞的严重程度起着至关重要的作用。本文将带…

视频无损压缩工具+预览视频生成工具

视频无损压缩工具 功能与作用 &#xff1a;视频无损压缩工具是一种能够减少视频文件大小&#xff0c;但同时保持视频质量的工具。它通过先进的编码技术和算法&#xff0c;有效降低视频文件的存储空间&#xff0c;同时保证视频的清晰度和观感。这对于需要分享或存储大量视频内容…

Thinkphp5x远程命令执⾏及getshell

启动环境查看端口 ? sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1] []id ? s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[ 1][]-1 ? sindex/think\app/invokef…

稳定为恒定功率负载供电的 DC/DC 转换器

恒定功率负载 (CPL) 存在于电动汽车、电信设备、电力电子设备等各种应用中。这些 CPL 是无论施加的电压或电流如何变化都保持恒定功耗的电气负载。与呈现恒定电阻的电阻负载不同&#xff0c;CPL 具有随电压或电流变化而变化的动态阻抗&#xff0c;即&#xff0c;当负载两端的电…

RabbitMQ 高级特性——重试机制

文章目录 前言重试机制配置文件设置生命交换机、队列和绑定关系生产者发送消息消费消息 前言 前面我们学习了 RabbitMQ 保证消息传递可靠性的机制——消息确认、持久化和发送发确认&#xff0c;那么对于消息确认和发送方确认&#xff0c;如果接收方没有收到消息&#xff0c;那…

照片EXIF数据统计与可视化

拍的照片越来越多&#xff0c;想要了解一下日常拍摄的习惯&#xff0c;便于后面换镜头、调整参数等操作&#xff0c;所以写了这个脚本来统计照片的EXIF数据。该脚本用于统计指定文件夹下所有JPG图片的EXIF数据&#xff0c;包括快门速度、ISO、焦距、光圈和拍摄时间&#xff0c;…

一张示意图看懂深度嵌入聚类DEC

深度嵌入聚类算法的架构。 步骤 1&#xff1a;根据输入数据集&#xff0c;训练自编码器将原始变量矩阵映射到潜在特征。 步骤 2&#xff1a;对潜在特征进行 K 均值聚类。 步骤 3-6&#xff1a;然后&#xff0c;为每个样本计算六个软标签&#xff0c;并估计目标分布&#xff…

小米机型更改参数与工程固件的关联 实例解析工程固件修改参数的步骤解析

工程固件写入后手机机型的端口默认是全开。包括usb调试以及基带端口diag 。而且工程固件基带默认是没有加密的。改写无限制。这也就是很多技术使用工程固件来写入机型的目的。今天简单来解析下工程固件修改参数的常规步骤以及一些常规知识。 通过博文了解: 1💝💝💝---…

基于vue框架的传染病人管理系统3w776(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;公告信息,工作人员,传染病人,上报记录,入住信息,需求订单,隔离结束记录 开题报告内容 基于Vue框架的传染病人管理系统开题报告 一、研究背景与意义 研究背景 在全球化的今天&#xff0c;人口流动日益频繁&#xff0c;传染病的传播速…

报文在VXLAN网络中是怎么转发的?这么简单居然有人不知道

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好&#xff0c;我的网工朋友 不知道大家有没有想过这个问题&#xff1a;VXLAN网络中的报文是如何转发的&#xff1f; 在基本的二三层转发中…

在ComfyUI中,Cross-Attention优化方案应该选哪个?

&#x1f431;‍&#x1f409;背景 在comfyui中&#xff0c;如果你使用了秋叶的启动器&#xff0c;会在高级选项中看到这样一行选项&#xff1a;Cross-Attention优化方案&#xff0c;右边有个下拉框&#xff0c;可以选择的选项有4个&#xff0c;如下图&#xff1a; 那么&#…

vscode缩进 和自动格式化

如下图&#xff0c;缩进太大了。 检查2个地方 prettierrc.cjs文件。此处决定缩进几个tab vscode 的设置。 保存的时候 格式化。

计算机毕业设计 基于Python内蒙古旅游景点数据分析系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

采购系统价格沉淀:降低采购成本,提高采购效率

在当今竞争激烈的市场环境中&#xff0c;企业对于成本控制与效率提升的追求从未停歇。采购作为企业运营的重要一环&#xff0c;其成本直接关联到产品的定价与市场竞争力。因此&#xff0c;引入并优化采购系统价格沉淀机制&#xff0c;成为众多企业降低采购成本、提升采购效率的…