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个对象

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】nginx连接前端项目

文章目录 一、项目编译1.编译文件2.dist文件 二、Linux nginx配置三、启动nginx 一、项目编译 1.编译文件 2.dist文件 二、Linux nginx配置 在Xshell软件中,点击CtrlAltF进入文件传输找到地址:/usr/local/nginx/html将dist文件传入 找到nginx.conf&…

R包:VennDiagram韦恩图

加载R包 library(VennDiagram)数据 # Prepare character vectors v1 <- c("DKK1", "NPC1", "NAPG", "ERG", "VHL", "BTD", "MALL", "HAUS1") v2 <- c("SMAD4", "DKK1…

【计算机网络 - 基础问题】每日 3 题(十九)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

【Python】curl命令、Api POST导入cURL、python直接使用cURL

文章目录 一、浏览器复制cURL二、API POST直接使用cURL创建接口三、python直接使用cURL构建网络请求四、curl命令详解语法选项实例 cURL是一种命令行工具&#xff0c;常用于通过各种协议&#xff08;如HTTP、HTTPS、FTP等&#xff09;传输数据。它的名字来源于"Client URL…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

「漏洞复现」灵当CRM marketing/index.php SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

python爬虫初体验(一)

文章目录 1. 什么是爬虫&#xff1f;2. 为什么选择 Python&#xff1f;3. 爬虫小案例3.1 安装python3.2 安装依赖3.3 requests请求设置3.4 完整代码 4. 总结 1. 什么是爬虫&#xff1f; 爬虫&#xff08;Web Scraping&#xff09;是一种从网站自动提取数据的技术。简单来说&am…

c++调用python函数进行传参计算和返回

目录 前言&#xff1a;配置环境&#xff1a;基础夯实&#xff1a;1. 初始化Python解释器2. 导入Python模块3. 获取函数对象4. 调用Python函数5. 处理返回值6. 错误处理7. 资源管理8. 编译和链接9. 线程安全性10. 进一步学习 效果展示&#xff1a;实现功能&#xff1a;操作步骤&…

CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件

场景 CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载&#xff1a; CentOS上使用rpm离线安装Mosquitto(Linux上Mqtt协议调试工具)附资源下载-CSDN博客 上面介绍了mosquitto的离线安装。 如果业务场景中需要订阅某mqtt主题的消息并将收到消息的时间以…

Android轻量级RTSP服务使用场景分析和设计探讨

技术背景 好多开发者&#xff0c;对我们Android平台轻量级RTSP服务模块有些陌生&#xff0c;不知道这个模块具体适用于怎样的场景&#xff0c;有什么优缺点&#xff0c;实际上&#xff0c;我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景&#…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

windows桌面管理软件推荐:一键整理桌面!美化电脑桌面小助手!

windows桌面管理软件推荐来咯&#xff01;在繁忙的工作和生活中&#xff0c;一个整洁、有序的电脑桌面不仅能提升工作效率&#xff0c;还能带来愉悦的视觉体验。然而&#xff0c;随着文件的增多&#xff0c;桌面往往变得杂乱无章。幸运的是&#xff0c;市面上有许多优秀的Windo…

构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)

引言 云计算与数据库服务 云计算作为一种革命性的技术&#xff0c;已经深刻改变了信息技术行业的面貌。它通过提供按需分配的计算资源&#xff0c;使得数据存储、处理和分析变得更加灵活和高效。在云计算的众多服务中&#xff0c;数据库服务扮演着核心角色。数据库服务不仅负…

​地质图制图规范大全资料分享

我们在《2024年最新测绘地理信息规范在线查看下载》一文整理460个测绘地理信息相关规范的在线查看链接。 现在我们又整理了地质图制图规范大全分享给大家&#xff0c;你可以在文末查看该文档的领取方法。 地质图制图规范大全 这些地质图制图规范来自地质科学数据出版系统&am…

Rustrover2024.2 正式发布:个人非商用免费,泰裤辣

如果这个世界本身 已经足够荒唐 那究竟什么才能算是疯狂 爱情就是这样 一旦错过了 就会有另一个人代替 我们知道 jetbrains 在今年的早些时候正式为 rust 语言发布了专用的 IDE &#xff0c;也就是 rustrover。如今 rustrover 也正式跻身为 jetbrains IDE 系列的一员猛将。…

network request to https://registry.npmjs.org/xxx failed, reason: connect ETIM

目录&#xff1a; 1、问题描述2、解决方案3、npm镜像仓库替换 1、问题描述 npm install 时&#xff0c;报错&#xff1a;npm ERR! network request to https://registry.npmjs.org/postcss-pxtorem failed, reason: connect ETIMEDOU npm ERR! code ETIMEDOUT npm ERR! errno…

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件

COMTRADE 录波文件 | 可视化工具 | 电能质量查看软件 主要功能介绍 支持 IEEE Std C37.111-1991/1999/2013 规范。读取 ASCII 或二进制 COMTRADE 文件。查看来自 COMTRADE 配置文件的模拟和数字通道列表。将图表导出为 SVG、BMP、JPEG 和 PNG 图形格式。将显示的观察结果以 C…

携手长江存储,构建高性能分布式存储

近年来&#xff0c;《金融科技&#xff08;FinTech&#xff09;发展规划&#xff08;2022-2025 年&#xff09;》《关于银行业保险业数字化转型的指导意见》《金融标准化“十四五”发展规划》等金融监管政策陆续出台&#xff0c;金融机构对于数据基础设施的升级部署&#xff0c…

工业建模设计软件概览与SOLIDWORKS深度解析

在当今快速发展的工业领域&#xff0c;高效的建模设计软件是工程师和设计师不可或缺的工具。这些软件不仅提高了设计的精确度&#xff0c;还大幅缩短了产品从概念到市场的周期。本文将为您介绍当前市场上主流的工业建模设计软件&#xff0c;并重点介绍SOLIDWORKS的优势和应用。…

10.软件工程知识详解上

软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体可分成问题定义、可行性研究、需求分析等。软件开发时期&#xff1a;就是软件的设计与实现&#xff0c;可分成…