Python学习笔记----集合与字典
1. 字符串、列表和元组的元素都是按下标顺序排列,可通过下 标直接访问,这样的数据类型统称为序列。 其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。
集合
1. 与元组和列表类似,Set (集合)中同样可以包含多个不同类型的元素, 但集合中的各元素无序、 不允许有相同元素且元素必须是可哈希 (hashable)的对象。
注:可哈希对象是指拥有 __hash__(self) 内置函 数的对象。列表、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。
2. 创建集合
集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。
创建集合时,既可以使用{},也可以使用set函数。
set函数的语法格式如下:set([iterable]) ,其中,iterable是一个可选参数,表示一个可迭代对象。
例如:
a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
print(a) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”b=set('hello')
print(b)
#输出“{'e', 'l', 'o', 'h'}”
#传入了一个字符串参数,执行set函数时会依次将每个字符取出来形成子串作为新建集合中的元素。c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])
print(c)
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了列表作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))
print(d)
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了元组作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素
注:可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学 习的字符串、列表、元组都是可迭代的数据类型。
注:
- 与字符串、列表、元组等序列类型不同,集合中的元素不能使用下 标方式访问。
- 集合主要用于做并、交、差等集合运算,以及基于集合进行元素的 快速检索。
- {}用于创建空字典,如果要创建一个空集合,则需要使用set()
例题:
下列选项中,执行时不会报错的语句是( )。
A.{['Python',True]}
B.{3.5,[1.2,True]}
C.{3.5,{1.2,True}}
D.{3.5,1.2,True}
正确答案:D
解析:集合中的元素必须是可哈希的。哈希是数据结构中的一种存储方式,其特点是检索效率很高。在Python中,可变类型的数据都不可哈希,不能作为集合的元素;不可变类型的数据都可哈希,可以作为集合的元素。内置类型中,数字(含布尔值)、字符串和元组是不可变类型,而列表、集合和字典是可变类型。A选项和B选项中,列表是可变类型,因此不能作为集合中的元素;C选项中,集合是可变类型,因此不能作为集合中的元素;D选项中,数字和布尔值都是不可变类型,因此执行时不会报错。
字典
1. Dictionary(字典) 是另一种无序的对象集合。
但与集合不同,字典是一种 映射类型,每一个元素是一 个键(key):值(value)对。
2. 在一个字典对象中,键必须是唯一的,即不同元素的键不能相同;
另外,键必须是可哈希数据,即键不能是列表、集合、 字典等类型;值可以是任意类型。
3. 对于不包含任何元素的字典,即{},称为空字典。
创建字典
既可以使用{},也可以使用dict函数。
1. 创建空字典
例如:
a={}b=dict()
执行完毕后,a和b是两个不包含任何元素的空字典。
2. 如果在创建字典的同时,需要给出字典中的元素, 则可以使用下面的方法:
(1) {k1:v1,k2:v2,…,kn:vn}
#ki和vi(i=1,2,…,n)分别是每一个元素的键和值
a={'one':1, 'two':2, 'three':3}
(2)dict(**kwarg)
b=dict(one=1, two=2, three=3)
#**kwarg是一个或多个赋值表达式,两个赋值表达式之间 用逗号分隔
(3)dict(z)
#z是zip函数返回的结果
c=dict(zip(['one','two','three'], [1,2,3]))
(4)dict(ls)
d=dict([('one',1), ('two',2), ('three',3)])
#ls是元组的列表,每个元组包含两个元素,分别对应键和值
(5)dict(dictionary)
#dictionary是一个已有的字典
e=dict({'one':1, 'two':2, 'three':3})
zip函数
1. zip函数的参数是多个 可迭代的对象(列表 等),其功能是将不 同对象中对应的元素 分别打包成元组,然 后返回由这些元组组 成的列表。
在Python 3.x中为了减少内 存,zip函数返回的是一个 对象,可以通过list函数转换为列表 ,
如通过 “list(zip(['one','two','three'], [1,2,3]))” 可得到列表 “ [('one', 1), ('two', 2), ('three', 3)]”
访问字典元素
1. 与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问, 而是通过键访问
info={'name':'张三', 'age':19, 'score':{'python':95,'math':92}}
print(info['name'])
#输出“张三”print(info['age'])
#输出“19”print(info['score'])
#输出“{'python': 95, 'math': 92}”print(info['score']['python'])
#输出“95”print(info['score']['math'])
#输出“92”
相关文章:
Python学习笔记----集合与字典
1. 字符串、列表和元组的元素都是按下标顺序排列,可通过下 标直接访问,这样的数据类型统称为序列。 其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。 集合 1. 与元组和列表类似,Set (集合&a…...
c# 排序、强转枚举
List<Tuple<double,int>> mm中doble从小到大排序 mm本身排序 在C#中,如果你有一个List<Tuple<double, int>>类型的集合mm,并且你想要根据Tuple中的double值(即第一个元素)从小到大进行排序,同…...
“华为杯”第十六届中国研究生数学建模竞赛-C题:视觉情报信息分析
目录 摘 要: 一、问题重述 二、模型假设 三、符号说明 四、问题一分析与求解 4.1 问题一分析 4.2 模型建立 4.2.1 位置变换模型建立 4.2.4 多平面转换模型建立 4.3 模型求解 4.3.1 问题一图 1 结果 4.3.2 问题一图 2 结果 4.3.3 问题一图 3 结果 4.3.4 问题一图 4 结果 4.4 模…...
html+css+js网页设计 找法网2个页面(带js)ui还原度百分之90
htmlcssjs网页设计 找法网2个页面(带js)ui还原度百分之90 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑…...
018 | backtrader回测反转策略
什么是反转策略? 反转策略(Reversal Strategy)是一种试图捕捉市场价格趋势逆转的交易策略。与趋势跟随策略不同,反转策略的核心理念是“物极必反”,即价格在经过一段时间的单边趋势后,往往会出现逆转的机会…...
《图解HTTP》全篇目录
前言 目前,国内讲解 HTTP 协议的书实在太少了。在我的印象中,讲解网络协议的书仅有两本。一本是《HTTP 权威指南》,但其厚度令人望而生畏;另一本是《TCP/IP 详解,卷 1》,内容艰涩难懂,学习难度…...
基于VS2019(Release_x64)+Qt的软件开发—环境配置
前置博客: 基于C高级编程语言的软件开发随记——环境变量-CSDN博客 (一)一种避免设置大量环境变量的VS2019环境配置方法 Ⅰ 解决方案资源管理器->VC目录->在包含目录/库目录中添加对应的include/lib文件夹($(So…...
【书生大模型实战营(暑假场)闯关材料】入门岛:第1关 Linux 基础知识
【书生大模型实战营(暑假场)闯关材料】入门岛:第1关 Linux 基础知识 1. 使用VScode进行SSH远程连接服务器2. 端口映射及实例参考文献 这一博客主要介绍使用VScode进行服务器远程连接及端口映射。 1. 使用VScode进行SSH远程连接服务器 安装V…...
240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank
A. 最终效果 B. 可通过鼠标点击打开文件,但会跳转到about:blank import gradio as gr import subprocessdef open_pptx():pptx_path /Users/liuguokai/Downloads/240528-工业大模型1.pptxtry:subprocess.Popen([open, pptx_path])return "PPTX file opened s…...
go在linux上安装
1.首先要确定Linux架构 uname -m如果你的系统是 armv7l(32-bit ARM),你需要下载 armv6l 版的Go语言。 如果你的系统是 aarch64(64-bit ARM),你需要下载 arm64 版的Go语言。 如果你的系统是 x86_64…...
算法日记day 35(动归之分割等和子集|最后一块石头的重量2)
一、分割等和子集 题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分…...
FPGA使用sv生成虚拟单音数据
FPGA使用sv生成虚拟单音数据 之前一直使用matlab生成虚拟的数据,导出到txt或是coe文件中,再导入到fpga中进行仿真测试。 复杂的数据这样操作自然是必要的,但是平日使用正弦数据进行测试的话,这样的操作不免复杂,今日…...
Linux shell编程:监控进程CPU使用率并使用 perf 抓取高CPU进程信息
0. 概要 本文将介绍一个用于监控一组进程CPU使用率的Shell脚本,,当检测到某进程的CPU使用率超出阈值时,使用 perf 工具抓取该进程的详细信息。 本shell脚本为了能在普通嵌入式系统上运行做了妥协和优化。 1. shell脚本流程的简要图示&#…...
Linux网络编程的套接字分析(其一,基本知识)
文章目录 套接字的类型流套接字数据报套接字原始套接字 套接字地址获取套接字地址 协议族和地址族 套接字的类型 Linux系统的套接字有三类:流套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAM)。 流套接字 用于面向连接…...
后端Web开发之Maven
1.java项目构建工具maven介绍 Maven是apache旗下的一个开源项目。Apache软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源(源代码开放)软件基金会也是一一个专门为支持开源项目而生的非盈利性组织。 apache开源项目…...
前端创新实践:用JavaScript打造网页扫码新体验
引言 简述扫码技术在现代网页应用中的普及和重要性。引入JavaScript实现网页扫码功能的创新性和实用性。 扫码技术概述 介绍扫码技术的原理和在不同平台(如微信、支付宝)的应用。讨论扫码技术对用户体验和业务流程的影响。 JavaScript实现网页扫码的…...
AWS CLI命令行
参考文档:在 macOS 上安裝,更新和卸載 AWS CLI 版本 1 - AWS Command Line Interface...
领导力培养的底层逻辑
领导力就是从人们从他们现在的地方,到他们从未去过的地方的能力--基辛格 ## 1. 领导力的一些观点 ## 2. 五种习惯十大承诺 ## 3. 需要领导的场景 ## 4.0 组织中谁需要领导力 ## 5.0 领导力培养 领导力培养的底层逻辑可以简单描述为以下几个方面: 管理…...
【MATLAB第107期】基于MATLAB的Morris局部敏感性分析模型(无目标函数)
【MATLAB第107期】基于MATLAB的Morris局部敏感性分析模型(无目标函数) 更正: 局部敏感性分析方法 一、原理介绍 1.基本原理: Morris方法采用概率均匀抽样的方式估计每个模型输入因子在输出结果中的重要性,通过比较系…...
Tomcat搭建JSPServlet
一、Tomcat环境搭建 1. 将项目变为Web项目 选中项目,点击Help中的Find Action 搜索Add Framework Support 勾选Web Application 出现这些文件就是成功了 2. 配置Tomcat 点击Edit Configurations 点击加号,选择Tomcat Server Local Deployment栏下点击…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
