第4章 Python-字典与集合
14
4.1.2 字典的基本操作
15
字典的基本操作
键值 查找
字典 更新
添加 元素
成员 判断
删除 元素
1. 键值查找
16
Source
>>> aInfo = {'Mayue': 3000, 'Lilin': 4500, 'Wuyun': 8000} >>> aInfo['Lilin'] 4500
2. 字典更新
Chap4 Dictionary and Set
第4章 字典与集合
2
字典
Dictionary
集合
Set
3
字典
为什么要使用字典?
4
某公司人事部门让技术部门用Python构建一个 简易的员工信息表,包含员工的姓名和工资信 息。根据信息表查询员工Linlin的工资。
Source
>>> names = ['Mayue', 'Lilin', 'Wuyun'] >>> salaries = [3000, 4500, 8000] >>> print(salaries[names.index('Lilin')]) 4500
9
创建字典
用dict()函数创建 >>S>ourceinfo = [('Mayue', 3000), ('Lilin', 4500), ('Wuyun', 8000)] >>> bInfo = dict(info) >>> print(bInfo) {'Lilin': 4500, 'Wuyun': 8000, 'Mayue': 3000} >>> cInfo = dict([['Mayue', 3000], ['Lilin', 4500], ['Wuyun', 8000]]) >>> dInfo = dict(Mayue = 3000, Lilin = 4500, Wuyun = 8000) >>> eInfo = dict((('Mayue', 3000), ('Lilin', 4500), ('Wuyun', 8000)))
生成字典
13
对于几个公司的财经数据,如何构造公司代码 和股票价格的字典?
aDict = {'AXP': '78.51', 'BA': '184.76', 'CAT ': '96.39', 'CSCO': '33.71', 'CVX': '106.09'}
算法分析:可用循环将公司代码和股票价格分别 append到一个新列表中,再利用zip()和dict()函数将这 两个列表转化成字典。
'Lilin' 4500 'Wuyun' 8000
字典中的元 素是无序的
Source
>>> sorted(aInfo) ['Lilin', 'Mayue', 'Wuyun']
7
4.1.1 创建字典
8
创建字典
直接创建
Source
>>> aInfo = {'Mayue': 3000, 'Lilin': 4500, 'Wuyun': 8000}
生成字典
Байду номын сангаас
12
对于几个公司的财经数据,如何构造公司代码 和股票价格的字典?
pList = [('AXP', 'American Express Company', '78.51'),
('BA', 'The Boeing Company', '184.76'), ('CAT', 'Caterpillar Inc.', '96.39'), ('CSCO', 'Cisco Systems,Inc.', '33.71'), ('CVX', 'Chevron Corporation', '106.09')]
创建员工信息表时将所有员工的工资默认值设 置为3000
生成字典
11
已知有姓名列表和工资列表,如何生成字典类 型的员工信息表?
Source
>>> names = ['Mayue', 'Lilin', 'Wuyun'] >>> salaries = [3000, 4500, 8000] >>> dict(zip(names,salaries)) {'Mayue': 3000, 'Lilin': 4500, 'Wuyun': 8000}
3. 添加元素
19
Source
>>> d = {} >>> d["Liuyue"] = [65,88,90] >>> d {'Liuyue': [65, 88, 90]} >>> d['Majin'] = [89] >>> d['Majin'] += [94] >>> d["Majin"] += [85] >>> d {'Liuyue': [65, 88, 90], 'Majin': [89, 94, 85]}
salaries['Lilin']
5
字典
• 什么是字典?——一种映射类型
• 键(key) • 值(value) • key-value对
键是唯一的:
数字 字符串
元组 不可变对象
6
字典
• aInfo = {'Mayue': 3000, 'Lilin': 4500, 'Wuyun': 8000}
key value 'Mayue' 3000
4. 成员判断
20
Source
>>> aInfo = {'Mayue': 3000, 'Lilin': 4500, 'Wuyun': 8000} >>> 'Liuyun' in aInfo False
10
创建字典
用方法fromkeys(seq[, value])创建
Source
>>> gInfo = {}.fromkeys(('Mayue', 'Lilin', 'Wuyun'), 3000) >>> print(gInfo) {'Lilin': 3000, 'Mayue': 3000, 'Wuyun': 3000}
17
Source
>>> aInfo['Lilin'] = 9999 >>> aInfo {'Wuyun': 8000, 'Mayue': 3000, 'Lilin': 9999}
3. 添加元素
18
>>>SourceaInfo = {'Mayue': 3000, 'Lilin': 9999, 'Wuyun': 8000} >>> aInfo['Liuxi'] = 6000 >>> aInfo {'Wuyun': 8000, 'Liuxi': 6000, 'Mayue': 3000, 'Lilin': 9999}
python--序列,字符串,列表,元组,字典,集合内存分析
python--序列,字符串,列表,元组,字典,集合内存分析⼀,什么是序列、 序列是⼀种数据存储⽅式,⽤来存储⼀系列的数据,在内存(堆内存)中,序列是⼀块⽤来存放多个值的连续的内存空间,其存储的值为所指向对象的地址。
⽐如说a = [ 10 , 20 , 30 , 40 ]在内存中实际是按照以下⽅式存储的。
下图中序列存储的是整数对象的地址,⽽不是整数对象的值。
python中常⽤的序列结构有:字符串,列表,元组,字典,集合列表:⼀,什么是列表? 是⼀种⽤来存储任意数⽬,任意类型的数据集合。
⼆,列表的底层原理是什么? 参照上图三,列表的三种创建⽅式 1.基本语法 [ ] 创建a = [ 1, 2 , "abc" ]a = [ ] 2,list()创建:使⽤list()可以将任何可迭代对象转化为列表a = list( )a = list(range(10))注意:range的语法格式: range([start],end,[step]) start:可选,表⽰起始数字,默认是0 end:必选,表⽰结尾数字 step:可选,表⽰步长,默认是1,可正可负 python3中range()返回的是⼀个range对象,⽽不是列表,我们需要通过list()⽅法将其转换为列表对象 3.推导式⽣成列表a = [ x*2 for x in range( 5 ) if x%3==0 ]第⼀步:range(5)为,[ 0,1,2,3,4 ]第⼆步:每个x分别乘2。
[ 0,2,4,6,8 ]第三步:判断是否为3的倍数。
[ 6 ]四,对列表的操作(添加元素,删除元素,访问元素,切⽚,排序)添加元素(5种)当列表增加和删除元素时,列表会⾃动进⾏内存管理,⼤⼤减少程序员的负担。
但这个特点涉及列表元素的⼤量移动,效率较低。
(当在中间插⼊或删除元素时,实质上是对数组的拷贝,故⽽效率较低)除⾮必要,我们⼀般只在列表的尾部添加元素或者删除元素,这会⼤⼤提⾼列表的操作效率。
Pyhton实用教程 第4章 数组操作
定义一个空的列表 定义一个项为数字0,1,2的列表
解释
3 L = [‘abc’, [‘def’, ‘ghi’]] 定义一个项为字符串,列表的列表
4
L = list(‘this is a list’) 使用list函数定义列表,同语句L = ['l', 'i', 's', 't']含义一样
5
L = list(range(-8, 4)) 使用list函数定义列表,同语句L = [-1, 0, 1, 2]含义一样
输出语句执行次数为: n+(n-1)+(n-2)+(n-3)+……+1, 值为n²/2+n/2。根据性质2 和性质3可得时间复杂度 为O(n2)
制定键值和值,注意:,{} 删除键值“C”和与其对应的值 指定输出键值为“H”的值
PAGE 11
4.2 字典
创建一个字典,存有周期表中的前5个元素
输出: Hydrogen ('H', 'Hydrogen') ('He', 'Helium') ('Li', 'Lithium') ('Be', 'Beryllium') ('B', 'Boron')
8
15
19
17
5
8
15
17
19
PAGE 20
4.4 排序与查找
4.4.1 冒泡排序
输出: [5, 8, 15, 17, 19]
①
17
5
19
8
Python字典和集合
Python字典和集合一、字典字典是一种可变容器模型,可存储任意类型对象。
和之前我们讲过的列表及元组都不相同,字典中存储的是一组数据,这组数据包含了两个部分键和值。
例如每个同学都有学号和姓名,其中学号是唯一的,姓名是可能相同的,字典就是这样的格式,可以把学号理解为键,姓名理解为值。
另外Python默认的字典是无序的,不像元组和集合,通过index索引可以获取值,由于没有顺序,所以字典不存在索引。
字典的键是唯一的,不能出现多次,多次出现时取最后一个值。
下面我们创建字典并进行一些基本操作。
1.字典的形式及创建整个字典包括在花括号{} 中,可以看出字典每个元素包含2个部分,它们分别是“键”和“值”,键和值之间用:隔开,两个元素之间用,隔开。
2.字典元素的访问由于字典不存在顺序所以也没有索引,但是我们可以通过访问其键获取它对应的值,相当于我们要去一个班级找学生,只要报出学号就可以找到该学生了。
3.添加、修改、删除元素字典是可以变化的,我们对其进行增加、删除和修改操作。
增加元素就是直接通过键值对其进行添加;删除元素还是通过del语句进行,删除的是一对元素,包括键和值。
修改元素就是直接覆盖了现有元素,它的形式和添加元素的格式类似。
以上只是字典的最基础操作,字典可以存储各种混合数据类型,其中键需要取不可变的数据类型,但是值可以取任意类型的对象。
二、集合在学习数学的时候我们应该学过集合这个概念,在Python中同样存在一种名叫集合的数据类型,集合(set)是一个无序的不重复元素序列。
集合的表达式和字典有点相似都是包括在花括号{} 中。
集合中所保存的元素是没有顺序的,且可以保存多种数据类型,集合中的元素都存在唯一性,不能重复出现。
1.创建集合创建集合的时候有2种方式,一种是直接使用集合的特征符号“{}”来创建,一种是使用set()函数强制类型转换來创建。
集合是由“{}”括起来的结构,每个元素之间用“,”隔开,集合和字典都是用大括号括起来,但是集合之间不使用冒号,只能使用逗号。
Python中的列表、元组、字典和集合教案
Python中的列表、元组、字典和集合教案一、教学目标1.理解Python中列表、元组、字典和集合的基本概念。
2.掌握列表、元组、字典和集合的创建、访问和修改方法。
3.了解列表、元组、字典和集合的常用操作和内置函数。
4.能够根据实际需求选择合适的数据结构解决问题。
二、教学内容1.列表(List)●概念:列表是Python中的一种可变序列类型,可以包含不同类型的元素。
●创建:使用方括号[]或list()函数创建列表。
●访问:通过索引访问列表元素,支持切片操作。
●修改:使用赋值语句修改列表元素,使用append()、insert()、remove()等方法添加、插入或删除元素。
●常用操作:len()、max()、min()、sort()等。
2.元组(Tuple)●概念:元组是Python中的一种不可变序列类型,与列表类似,但元素不能修改。
●创建:使用圆括号()或tuple()函数创建元组。
●访问:通过索引访问元组元素,支持切片操作。
●注意:由于元组不可变,因此没有提供修改元素的方法。
●常用操作:与列表类似,但不包括修改元素的方法。
3.字典(Dictionary)●概念:字典是Python中的一种可变映射类型,用于存储键值对。
●创建:使用花括号{}或dict()函数创建字典。
●访问:通过键访问对应的值,使用get()方法获取指定键的值(可选默认值)。
●修改:使用赋值语句修改键值对,使用del语句删除键值对。
●常用操作:keys()、values()、items()等。
4.集合(Set)●概念:集合是Python中的一种可变无序且不重复的元素集。
●创建:使用花括号{}(不包含键值对)或set()函数创建集合。
●访问:由于集合无序,因此不支持索引访问。
可以判断元素是否存在于集合中。
●修改:使用add()方法添加元素,使用remove()方法删除元素。
还可以使用集合运算符进行并集、交集、差集等操作。
●常用操作:len()、union()、intersection()、difference()等。
Python3基础教程第4章
>>> []
#创建空列表对象
[] >>> list()
#创建空列表对象
[] >>> [1,2,3]
#用同类型数据创建列表对象
[1, 2, 3]
>>> [1,2,('a','abc'),[12,34]] [1, 2, ('a', 'abc'), [12, 34]]
#用不同类型的数据创建列表对象
>>> list('abcd') ['a', 'b', 'c', 'd']
也可通过分片将连续多个数据替换成新的数据。
>>> x=list(range(10)) #创建列表对象
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[2:5]
#返回分片列表
[2, 3, 4] >>> x[2:]
#省略分片结束位置时,分片直到列表结束
[2, 3, 4, 5, 6, 7, 8, 9]
6.关系判断 可用in操作符判断对象是否属于列表,示例代码如下。 >>> 2 in [1,2,3] True >>> 'a' in [1,2,3] False
7.索引
与字符串类似,可通过位置来索引列表元素,也可通过索引修改列表元素。
>>> x=[1,2,['a','b']] >>> x[0]
数据结构 字典
前面讨论过的各种数据汇集结构都可用作字典的实现基础 例如线性表,是元素的顺序汇集。如果以关联作为元素,就可以看 作是字典了。下面首先考虑这种实现 作为字典实现,最重要的问题是字典操作的实现。由于字典可能有 一定规模,需要频繁执行查询等操作,操作的效率非常重要
下面将讨论一系列字典实现技术
基于线性表的字典实现,优点和缺点都很明显:
优点:数据结构和算法简单,适用于任何关键码集合 缺点:平均检索长度大,表长度 n 较大时检索耗时太长 删除的效率也比较低,因此不太适合频繁变动的字典 在字典的动态变化中,各种操作的效率不变(因为都已经是效率 很低的操作了)
裘宗燕,2018/3/7-/10/
本章研究的问题就是数据的存储和检索(查询),实际中的例子:
电子字典,基本功能就是基于算法的数据检索 图书馆编目目录和检索系统,支持读者检索书籍资料的有关信息 规模巨大的有机物库,需要基于结构或光谱等参数进行检索 多元多项式乘法,做出一个因子乘积后应合并同类项,需要检索
本章讨论的是基于关键码的数据存储和检索
在 Python,顺序字典可用 list 实现
关联可以用 Assoc 对象,也可以用二元的 tuple 或 list 实现
检索就是在用关键码在表中查找(顺序查找)。遇到关键码 key 相 同的字典项就是检索成功,返回相应的 value;检查完表中所有的 项但没遇到要找的关键码,就是检索失败 插入新关联用 append 实现;删除可以在定位后用 del 实现,或者 基于要删除项的内容,用 remove 操作实现
数据结构和算法(Python 语言版):字典和集合(1)
裘宗燕,2018/3/7-/1/
Python基础课程4Python高级数据
4.2字典
4.2.1字典的创建 ➢字面值创建: {key1:value1,key2:value2,…,keyN:valueN}
(1)组成单位是键值对。 (2)键必须是不可变对象(如字符串、数值或元组),但是值 可以是任意的数据类型。 (3)键必须是唯一的,值不必是,即键名不能重复。
图1 字面值创建字典示例
➢ clear()清空列表
➢ copy()用于完整拷贝列表,内存重新分配空间,不是新建引用, a = list.copy()不等于a = list,等于a = list[:]
图1 copy函数示例及 比较
4.1列表和元组
➢ sort(key, reverse)高级排序。一般的排序函数,默认排序指标 是数值大小、字符编号等等,并且是升序排列。可以改变排 序指标和升降序设置。
➢ remove(obj)用于移除列表中的匹配值的第一项。
4.1列表和元组
➢ reverse()将列表元素反向,而不是逆排序 ➢ sort()用于给列表元素排序,要求列表元素必须同类型。
图1元素必须都是可比较的示例
sorted方法也可以实现列表排序,不会改变原列表,而是生成新的排序列表
4.1列表和元组
4.1列表和元组
图1 列表元组示例
4.1列表和元组
4.1.2通用操作 序列指有序的元素组合,包括字符串、列表和元
组。首先介绍序列都会用到的通用操作,包括
➢ 索引 ➢ 分片 ➢ 序列相加 ➢ 乘法 ➢ 成员资格 ➢ 长度、最大和最小值 ➢ 序列推导 ➢ 生成器
4.1列表和元组
(1)索引 使用方括号和序号获取序列的单一元素,若序列长度是n. ➢正向索引:序号从0到n-1; ➢反向索引:序号从-n到-1。
字典与集合的区别
字典与集合是Python中常用的两种容器类型,它们在用途和特性上有一些区别。
本文将从定义、特点、操作方法和应用场景等方面对字典与集合进行比较。
首先,字典是一种以键值对(key-value)形式存储数据的容器,其中的键必须唯一且不可变,而值可以是任意的对象。
可以将字典看作是一个无序的集合,其中每个元素都是键值对。
集合则是一个无序的、用于存储不重复元素的容器。
可以将集合看作是只有键没有值的字典。
其次,字典与集合在定义方面也有所区别。
字典使用大括号 {} 表示,每个键值对用冒号 : 分割,不同的键值对用逗号 , 分隔。
例如:{'name': 'Tom','age': 20}。
而集合使用大括号 {} 或 set() 表示,其中的元素没有键值对的形式,只是一个个独立的值。
例如:{'apple', 'banana', 'orange'}。
字典与集合的特点也不相同。
字典主要特点有:1.键值对的存储方式,键的唯一性保证了快速查找和修改数据的能力。
2.可以根据键访问值,提高了数据的检索效率。
3.可以包含不同类型的值。
而集合主要特点有:1.元素的唯一性,保证了每个值只会出现一次。
2.支持集合间的交集、并集、差集等操作。
3.可以快速判断一个元素是否在集合中。
在操作方法上,字典和集合也存在一些区别。
对于字典,可以通过键来访问对应的值,也可以通过键来修改对应的值。
另外,可以使用keys()方法获取所有的键,使用values()方法获取所有的值,使用items()方法获取所有的键值对。
对于集合,可以使用add()方法添加元素,使用remove()方法删除元素,使用union()方法求并集,使用intersection()方法求交集,使用difference()方法求差集等。
最后,字典和集合在应用场景上也有一些差异。
字典常用于存储需要通过键来检索的数据,比如存储学生的学号和姓名、存储城市的天气信息等。
Python中元组、字典和集合的简单使用
(1)字典的创建 >>>aDict={‘age’:39,’score’:98,’name’:’Dong’,’sex’:’male’} >>>stu={‘name’:’ChenLi’,’age’:18} >>>x=dict()#用dict()函数创建一个空字典 >>>x={}#空字典
Python中元组、字典 和集合的简单使用
01 元组
元组可以看成轻量级的列表,很多地方类似于列表,但功能要简单一些,在某些情况 下也足够了。
元组和列表都属于有序序列,支持使用双向索引访问其中的元素,使用内置函数len() 统计元素个数、max()求最大值、min()求最小值、sum()求元素之和,使用运 算符in测试是否包含某个元素、使用方法cou1)nt强(吴)强二统计指定元素的出现次数。
1)强吴强二
02 字典
字典是包含若干个“键:值”元素的无序可变容器类对象,字典中每 个元素包含用冒号分隔的“键”和“值”两部分,表示一种映射或对应 关系。
字典中每个元素的“键”可以是任意不可变数据,如整数、实数、字 符串、元组(其中不能包含列表、字典或集合等可变序列)等类型, 但不能使用列表、集合、字典或其他可变类型作为字典的“键”。
_______
>>>x=[-1]
_______
1)强吴强二
>>>x[1]=4 #元组是不可变的,试图改变元素的值会抛出异常 TypeError:’tuple’ object does not support item assignment
(3)常见内置函数对元组的使用 >>>x=(1,2,3,4,5) >>>len(x) _______ >>>max(x) _______ >>>min(x) _______ >>>su创建与删除 >>>a={3,5} >>>a_set=set(range(8,14)) >>>a_set {8,9,10,11,12,13} >>>b_set=set([0,1,2,3,0,1,2,3,7,8])#将列表转换为集合,自动去掉重复元素 >>>b_set ___________________ >>>c_set=set()#创建空集合
基本数据类型和组合数据类型
二、实验原理
1.测量误差的计算方法
在图2-6-1所示电路中,由于电压表的内阻RV不为无 穷大,在测量电压时引入的方法误差如下:
RV R2 Βιβλιοθήκη UU2U 2
R2 R1 R2
RV +R2
R1
RV R2 RV +R2
U
( R1
R1R22 R2 )(R1R2 R2RV
U RV R1)
。
二、实验原理
2.仪表内阻的测量方法
(1)用“分流法”测量电流表的内阻。 设被测电流表的内阻为RA,满量程电流为Im,测试电路如图2-6-2所 示,首先断开开关S,调节可调恒流源的输出电流I,使电流表指针达到 满偏转,即I=IA=Im。然后合上开关S,并保持I值不变,调节电阻箱的阻 值R,使电流表的指针指在1/2满量程位置,即
表2-6-1 电流表内阻测量数据
被测表量程 (mA)
10
100
S断开,调节恒流源,使 I=IA=Im(mA)
S闭合,调节电阻R, 使IR=IA=Im/2(mA)
实际内阻 R(Ω)
计算内阻 RA(Ω)
四、实验内容
2、根据“分压法”原理测定直流电压表1V和10V量程的内 阻
1)实验电路如图2-6-3所示,其中R=10kΩ的电位器和470Ω电位器 串联,电压表两个量程都需要与直流数字电压表并联,由可调恒压源供 电,调节电位器RP1校准满量程。
已有元素进行修改和删除。 ➢ 列表是有序的。每个元素的位置是确定的,可以
用索引访问每个元素。 ➢ 列表元素的数据类型是任意的。同一个列表的各
元素可以是不同的数据类型。
5
一、实验目的
1、掌握电压表、电流表内阻的测量方法; 2、掌握电工仪表测量误差的计算方法。
