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栏下点击…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
