Python可迭代对象(2)

news2024/9/23 17:30:31

目录

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.coloradmin.cn/o/2158079.html

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

相关文章

ChatGLM-6B 部署与使用——打造你的专属GLM

ChatGLM-6B 部署与使用指南 ChatGLM-6B 是清华大学与智谱 AI 开源的一款对话语言模型,基于 General Language Model (GLM) 架构,参数达到 62 亿,因其卓越的语言理解与生成能力,受到广泛关注。 一、在 DAMODEL 上部署 ChatGLM-6B…

AD层次化设计中的常见错误

Duplicate Net Names Wire 仔细检查是不是网络标签没有标上 网络标签是否一致 Nets Wire has multiple names 上面的步骤也要检查 然后设置如下:

基于丹摩智算平台-手把手拿下经典目标检测模型 Faster-Rcnn

文章目录 1. 前言1. 1 丹摩智算平台1.2 经典目标检测模型 Faster-Rcnn 2. 前置准备2.1 WindTerm(远程连接服务器)2.2 项目源码 3. 服务器平台配置3.1 创建实例3.2 远程链接 4. Faster-rcnn 的环境配置4.1 上传文件,解压4.2 安装所需环境 5. 数…

在Windows系统上安装的 zstd C++ 库

在Windows系统上安装的 zstd C 库 项目地址:安装步骤步骤一步骤二 效果 项目地址: https://github.com/facebook/zstd 经过观察发现,这个项目没有CMakeLists.txt,只有Makefile,但是Makefile在windows系统下没有什么用, 所以说,常规的方式安装不可取了 安装步骤 步骤一 往下…

idea上使用tomcat运行web项目

idea上使用tomcat运行web项目 首先需要安装tomcat,可以查看我上一篇文章 如果你已经配置tomcat,这里不需要改动。如果未配置,需要在这里选择你tomcat目录 修改下面的上下文,也就是网页上访问时http://localhost:8080/后面拼…

算数运算之短路

c语言的表达式是从左往右求值的,我们在面对&&(按位与)和||(按位或)我们要根据与还有或的特性在判断是否能够使句子能够运行下去,就举个简单的例子 if(month 12 || month1 || month 2) { printf…

LeetCode 2374.边积分最高的节点:模拟

【LetMeFly】2374.边积分最高的节点:模拟 力扣题目链接:https://leetcode.cn/problems/node-with-highest-edge-score/ 给你一个有向图,图中有 n 个节点,节点编号从 0 到 n - 1 ,其中每个节点都 恰有一条 出边。 图…

英伟达开源 NVLM 1.0 引领多模态 AI 变革

新闻 NVLM 1.0 是由英伟达(Nvidia)最新推出的一系列前沿级别的多模态大型语言模型(MLLM),这些模型在视觉-语言任务上取得了与领先专有模型(例如 GPT-4o)和开放访问模型(例如 Llama 3…

[干货] [非基础警告] Unity 发布-订阅模式下的事件中心设计

本文师承于唐老师,但是修改了一些代码,采用更加方便理解的方式设计 1.什么是事件中心 2.可以比喻成冒险者工会的任务板子 任务板子上面有发布任务和任务完成两种基础情况 2.1 发布任务 来个冒险者发布一个任务,就执行Pulishtask方法 这…

【软件工程】状态转换图 其他图形工具

状态转换图 一、定义 二、符号表示 其他图形工具 一、层次方框图 二、Warmer图 三、IPO图 例题 选择题

【k8s】:DevOps 模式详解

1.什么是DevOps模式? DevOps 是当下非常火爆的一个概念,受到了很多互联网巨头的推崇。那么什么是 DevOps?它的全称是:集成开发与运维。至于它到底是干什么用的,为什么现在这么火爆,还得从源头说起。 1.1 …

无线感知会议系列【4】【基于WiFi和4G/5G的非接触无线感知:挑战、理论和应用-2】

前言: 本篇重点分享一下该论文 《Human Respiration Detection with Commodity Wifi Devices: Do User Location and Body Orientation Matter》 接 2020年北京智源大会 张大庆老师的一个报告 参考: https://blog.csdn.net/chengxf2/article/detai…

17.2 ksm源码讲解

本节重点介绍 : k8s资源对象的 buildStores构造函数注入MetricFamiliesk8s client-go 之 Reflector listAndWatch 方法watchHandler 监听更新,调用add等action 架构图总结 项目地址 地址 go get go get -v -d k8s.io/kube-state-metrics/v2v2.1.1源码分析 m…

uniapp微信小程序用户授权方法

效果 步骤 1&#xff09;div标签 <button type"primary" class"btn-login" click"getUserInfo">一键登录</button>2&#xff09;js方法 methods: {getUserInfo() {console.log("aaaa")uni.getUserProfile({desc: Wexin, …

Python画笔案例-056 绘制正方形金字塔

1、绘制正方形金字塔 通过 python 的turtle 库绘制 正方形金字塔,如下图: 2、实现代码 绘制正方形金字塔,以下为实现代码: """正方形金字塔.py """ import turtledef draw_square(length):for _ in

【Linux】yum、vim、gcc使用(超详细)

目录 yum 安装软件 卸载软件 查看安装包 安装一下好玩的命令 vim vim基本操作 模式切换 命令集 vim批量注释 vim配置 gcc 函数库 小知识点&#xff1a; Linux中常见的软件安装方式 --------- 下载&&安装 a、yum/apt b、rpm安装包安装 c、源码安装 y…

SDK(1.1note)

什么是SDK 控制台程序&#xff08;Console User interface&#xff09;CUI 对于控制台程序&#xff0c;通用&#xff0c;也就是平台无关 图形界面系统 可是如果你想要播放一个音乐&#xff0c;C语言有嘛&#xff1f; 所以需要平台开发&#xff0c;不可以移植性 平台会提供…

摒弃“流量思维”,以精准流量驱动企业发展——基于开源 AI 智能名片、链动 2+1 模式及 O2O 商城小程序的思考

摘要&#xff1a;本文深入探讨在当前竞争激烈的营销环境下&#xff0c;摒弃“流量思维”的紧迫性与必要性。强调做内容营销不能仅仅局限于发文案&#xff0c;而应摆脱一味追求阅读量、推荐量和粉丝数的误区&#xff0c;聚焦于获取精准流量。结合开源 AI 智能名片、链动 21 模式…

如何解决npm下载Puppeteer卡死的问题

亲测有效 export PUPPETEER_DOWNLOAD_BASE_URLhttps://cdn.npmmirror.com/binaries/chrome-for-testingnpm install https://github.com/cnpm/binary-mirror-config/pull/47https://github.com/cnpm/binary-mirror-config/pull/47 PS: 最开始看了下面这两个链接&#xff0c…

网络安全-长亭雷池的sql绕过

一、环境 雷池官网docker安装我的版本是 看官网介绍主要防御top10 二、讲解 我这里只描述通用型绕过&#xff0c;对于事件型不多描述&#xff0c;因为通用型的绕过是通杀的&#xff0c;差异化绕过 正常来说我们是因为没有一个很好的过滤所以造成第11关靶场的绕过 但是现在有了…