大学计算机:计算机思维与程序设计 课件 第3、4章 数据集合的存储与处理、数据处理的流程控制_第1页
大学计算机:计算机思维与程序设计 课件 第3、4章 数据集合的存储与处理、数据处理的流程控制_第2页
大学计算机:计算机思维与程序设计 课件 第3、4章 数据集合的存储与处理、数据处理的流程控制_第3页
大学计算机:计算机思维与程序设计 课件 第3、4章 数据集合的存储与处理、数据处理的流程控制_第4页
大学计算机:计算机思维与程序设计 课件 第3、4章 数据集合的存储与处理、数据处理的流程控制_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章数据集合的存储与处理

数据逻辑组织方式python序列分为有序序列和无序序列两类;有序序列包括:字符串,列表,元组无序序列包括:字典,集合大学计算机-计算思维与程序设计序列

指的是一片可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。大学计算机-计算思维与程序设计序列索引(序列中,每个元素都有属于自己的编号)1.自左向右,从起始元素开始计数,索引值从0开始递增;2.自右向左,从最后一个元素开始计数,从索引值-1开始递减;实例代码:str1=“重庆人文科技学院”print(str1[0])print(str1[-8])print(str1[1])print(str1[-7])01234567重庆人文科技学院-8-7-6-5-4-3-2-1大学计算机-计算思维与程序设计表示序列(字符串)序列切片大学计算机-计算思维与程序设计序列切片它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。序列实现切片操作的语法格式如下:sname[start:end:step]大学计算机-计算思维与程序设计各个参数的含义分别是:sname:表示序列的名称;start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为0;end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度;step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果step的值大于1,则在进行切片去序列元素时,会“跳跃式”的取元素。如果省略设置step的值,则最后一个冒号就可以省略。大学计算机-计算思维与程序设计例如,对字符串“重庆人文科技学院”进行切片:str1="重庆人文科技学院"#取索引区间为[0,2]之间(不包括索引2处的字符)的字符串print(str1[:2])#隔1个字符取一个字符,区间是整个字符串print(str1[::2])#取整个字符串,此时[]中只需一个冒号即可print(str1[:])大学计算机-计算思维与程序设计序列相加和序列相乘大学计算机-计算思维与程序设计序列相加Python中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。实例代码:str1=""str2="重庆人文科技学院"print(str1+str2)print("普通"+"本科院校:"+str2)大学计算机-计算思维与程序设计序列相乘Python中,使用数字n乘以一个序列会生成新的序列,其内容为原来序列被重复n次的结果。实例代码:str1="重庆人文科技学院"print(str1*3)大学计算机-计算思维与程序设计序列包含测试命令in、notin大学计算机-计算思维与程序设计检查元素是否包含在序列中Python中,可以使用in关键字检查某元素是否为序列的成员,其语法格式为:valueinsequence其中,value表示要检查的元素,sequence表示指定的序列。例如,检查字符‘w’是否包含在字符串“”中,如下代码:str1=""print('w'instr1)notin和in关键字用法相同,但功能恰好相反的,它用法检查某个元素是否不包含在指定的序列中,例如:str1=""print('c'notinstr1)大学计算机-计算思维与程序设计序列常见内置函数大学计算机-计算思维与程序设计序列相关的内置函数表3.1序列相关的内置函数函数功能len()计算序列的长度,即返回序列中包含多少个元素。max()找出序列中的最大元素。注意,对序列使用sum()函数时,做加和操作的必须都是数字,不能是字符或字符串,否则该函数将抛出异常,因为解释器无法判定是要做连接操作(+运算符可以连接两个序列),还是做加和操作。min()找出序列中的最小元素。list()将序列转换为列表。str()将序列转换为字符串。sum()计算元素和。sorted()对元素进行排序。reversed()反向序列中的元素。enumerate()将序列组合为一个索引序列,多用在for循环中。大学计算机-计算思维与程序设计大学计算机-计算思维与程序设计str1="重庆人文科技学院"print(len(str1))str1="0123456789"print(max(str1))str1="abcdef"print(max(str1))print(min(str1))列表大学计算机-计算思维与程序设计有序的数据集合体-列表列表是由多个数据组成的序列,可以通过索引(位置编号)来访问列表中的数据。列表有两个特点:第一,列表元素可以由任意类型的数据构成,不要求各元素具有相同类型第二,列表长度是不定的,随时可以增加和删除元素。大学计算机-计算思维与程序设计列表的格式列表会将所有元素都放在一对方括号

[]中,相邻元素之间用逗号分隔,如下所示:[element1,element2,element3,...,elementn]格式中,element1~elementn表示列表中的元素,个数没有限制,只要是Python支持的数据类型就可以。示例:

a=[10,20,30,40]大学计算机-计算思维与程序设计创建列表在Python中,创建列表的方法可分为2种:方法1:使用=运算符直接创建列表和其他类型的Python变量一样,创建列表时,也可以使用赋值运算符“=”直接将一个列表赋值给变量,其语法格式如下:listname=[element1,element2,element3,...,elementn]其中,listname表示列表的名称,注意,在命名时既要符合Python命名规范,也要尽量避开与Python的内置函数重名。实例:num=[1,2,3,4,5,6,7]name=[“重庆人文科技学院”,””]大学计算机-计算思维与程序设计方法2:使用list()函数创建列表Python还提供了一个内置的list()函数来创建列表,它可用于将元组、区间(range)等对象转换为列表;例如:y=list(range(5))print(y)[0,1,2,3,4]y=list(range(0,5))print(y)y=('小鱼儿',20,-1.2)#将元组转换成列表a_list=list(y)print(a_list)大学计算机-计算思维与程序设计函数原型:range(start,end,scan):参数含义:start:计数从start开始。默认是从0开始。例如:range(5)等价于range(0,5);end:技术到end结束,但不包括end.例如:range(0,5)是[0,1,2,3,4]没有5scan:每次跳跃的间距,默认为1。例如:range(0,5)等价于range(0,5,1)

range()函数可创建一个整数列表,一般用在for循环中。大学计算机-计算思维与程序设计列表添加元素的3种方法大学计算机-计算思维与程序设计append()方法添加元素append()方法用于在列表的末尾追加元素,该方法的语法格式如下:listname.append(obj)其中,listname指的是要添加元素的列表;obj表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。大学计算机-计算思维与程序设计实例代码:a_list=['小鱼儿',20,-2]#追加元素a_list.append('花无缺')print(a_list)a_tuple=(3.4,5.6)#追加元组,元组被当成一个元素a_list.append(a_tuple)print(a_list)#追加列表,列表被当成一个元素a_list.append(['a','b'])print(a_list)大学计算机-计算思维与程序设计extend()方法添加元素当然,如果希望不将被追加的列表或元组当成一个整体,而是只追加列表中的元素,则可使用列表提供的extend()方法。extend()方法的语法格式如下:listname.extend(obj)实例代码:a_list=['a',30]#追加元组中的所有元素a_list.extend((-2,3.1))print(b_list)#追加列表中的所有元素a_list.extend(['C','R','A'])print(b_list)#追加区间中的所有元素a_list.extend(range(97,100))print(b_list)大学计算机-计算思维与程序设计Python中append和extend的区别a_list.append(obj)obj–添加到列表末尾的对象。a_list.extend(seq)seq–元素列表。在已存在的列表中添加新的列表内容#appenda_list

=[0]a_list.append([1,2,3])输出结果:[0,[1,2,3]]#extenda_list

=[0]a_list.extend([1,2,3])输出结果:[0,1,2,3]大学计算机-计算思维与程序设计insert()方法插入元素如果希望在列表中间增加元素,则可使用列表的insert()方法,此方法的语法格式为:listname.insert(index,obj)其中,index参数指的是将元素插入到列表中指定位置处的索引值。使用

insert()方法向列表中插入元素,和append()方法一样,无论插入的对象是列表还是元组,都只会将其整体视为一个元素。实例代码:a_list

=list(range(1,6))print(a_list)#在索引3处插入字符串a_list.insert(3,'spidermen')print(a_list)#在索引3处插入列表a_list.insert(3,["spidermen"])print(a_list)大学计算机-计算思维与程序设计列表删除元素的3种方法大学计算机-计算思维与程序设计删除列表对于已经创建的列表,如果不再使用,可以使用del语句将其删除。实际开始时,del语句不常用,因为Python自带的垃圾回收机制会自动销毁不用的列表,所以即使开发者不手动将其删除,Python也会自动将其回收。del的语法格式为:dellistname其中,listname表示要删除列表的名称。代码实例:a_list=["重庆人文科技学院",""]print(a_list)dela_listprint(a_list)大学计算机-计算思维与程序设计根据目标元素所在位置的索引值进行删除del语句是Python

中专门用于执行删除操作的语句,不仅可用于删除列表的元素,也可用于删除变量等。例如,定义一个保存3个元素的列表,若指定删除最后一个元素,可以使用如下的代码:a_list=[20,2.4,(3,4)]dela_list[-1]print(a_list)大学计算机-计算思维与程序设计根据元素值进行删除除使用del语句之外,Python还提供了

remove()方法来删除列表元素,该方法并不是根据索引来删除元素的,而是根据元素本身的值来执行删除操作的。a_list=[20,'小鱼儿',30,-4,'小鱼儿',3.4]#删除第一次找到的30a_list.remove(30)print(a_list)#删除第一次找到的'小鱼儿'a_list.remove('小鱼儿')print(a_list)#再次尝试删除30,会引发ValueEroor错误a_list.remove(30)大学计算机-计算思维与程序设计删除列表所有元素list列表还包含一个clear()方法,正如它的名字所暗示的,该方法用于清空列表的所有元素。实例代码:a_list

=[20,'小鱼儿',30,-4,'小鱼儿',3.4]a_list.clear()print(a_list)大学计算机-计算思维与程序设计列表修改元素的方法大学计算机-计算思维与程序设计列表修改元素列表的元素相当于变量,因此程序可以对列表的元素赋值,这样即可修改列表的元素。a_list=[2,4,-3.4,'小鱼儿',23]#对第3个元素赋值a_list[2]='花无缺'print(a_list)#[2,4,'花无缺','小鱼儿',23]#对倒数第2个元素赋值a_list[-2]=9527print(a_list)#[2,4,'花无缺',9527,23]大学计算机-计算思维与程序设计实例代码:a_list=[2,4,-3.4,'小鱼儿',23]#对第3个元素赋值a_list[2]='花无缺'print(a_list)#[2,4,'花无缺','小鱼儿',23]#对倒数第2个元素赋值a_list[-2]=9527print(a_list)#[2,4,'花无缺',9527,23]大学计算机-计算思维与程序设计列表常用方法(count、index、pop、reverse和sort)大学计算机-计算思维与程序设计count()方法的用法(实例):a_list=[2,30,'a',[5,30],30]#计算列表中30的出现次数print(a_list.count(30))#计算列表中[5,30]的出现次数print(a_list.count([5,30]))大学计算机-计算思维与程序设计index()方法的用法:a_list=[2,30,'a','b','小鱼儿',30]#定位元素30的出现位置print(a_list.index(30))#从索引2处开始、定位元素30的出现位置print(a_list.index(30,2))#从索引2处到索引4处之间定位元素30的出现位置,因为找不到该元素,会引发ValueError错误print(a_list.index(30,2,4))大学计算机-计算思维与程序设计pop()用法pop()方法会移除列表中指定索引处的元素,如果不指定,默认会移除列表中最后一个元素。该方法的基本语法格式为:listname.pop(index)

示例如下:a_list=[1,2,3]#移除列表的元素3print(a_list.pop())print(a_list)#移除列表中索引为0的元素1print(a_list.pop(0))print(a_list)大学计算机-计算思维与程序设计reverse()用法reverse()方法会将列表中所有元素反向存放。该方法的基本语法格式为:listname.reverse()例如:a_list=list(range(1,8))#将a_list列表元素反转a_list.reverse()print(a_list)大学计算机-计算思维与程序设计sort()用法sort()方法用于对列表元素进行排序,排序后原列表中的元素顺序会方发生改变。sort()方法的语法格式如下:listname.sort(key=None,reverse=False)可以看到,和其他方法不同,此方法中多了2个参数,它们的作用分别是:key参数用于指定从每个元素中提取一个用于比较的键。例如,使用此方法时设置key=str.lower表示在排序时不区分字母大小写。reverse参数用于设置是否需要反转排序,默认False表示从小到大排序;如果将该参数设为True,将会改为从大到小排序。

大学计算机-计算思维与程序设计实例代码:a_list=[3,4,-2,-30,14,9.3,3.4]#对列表元素排序a_list.sort()print(a_list)b_list=['Python','Swift','Ruby','Go','Kotlin','Erlang']#对列表元素排序:默认按字符串包含的字符的编码大小比较b_list.sort()print(b_list)#['Erlang','Go','Kotlin','Python','Ruby','Swift']大学计算机-计算思维与程序设计如下代码示范了key和reverse参数的用法:b_list=['Python','Swift','Ruby','Go','Kotlin','Erlang']#指定key为len,指定使用len函数对集合元素生成比较的键,也就是按字符串的长度比较大小b_list.sort(key=len)print(b_list)#指定反向排序b_list.sort(key=len,reverse=True)print(b_list)大学计算机-计算思维与程序设计元组大学计算机-计算思维与程序设计元组元组是

由一系列按特定顺序排序的元素组成。元组是不可变序列,即元组中的元素不可以单独修改。大学计算机-计算思维与程序设计创建元组=运算符直接创建元组在创建元组时,可以使用赋值运算符“=”直接将一个元组赋值给变量,其语法格式如下:tuplename=(element1,element2,...,elementn)其中,tuplename表示创建的元组名,可以使用任何符合Python命名规则,且不和Python内置函数重名的标识符作为元组名。例如,下面定义的元组都是合法的:num=(7,14,21,28,35)a_tuple=("重庆人文科技学院","")大学计算机-计算思维与程序设计访问元组元素和列表完全一样,如果想访问元组中的指定元素,可以使用元组中各元素的索引值获取,例如,定义一个包含3个元素的元组,若想访问第2个元素,可以使用如下的代码:a_tuple=('小鱼儿',20,-1.2)print(a_tuple[1])元组也支持采用切片方式获取指定范围内的元素,例如,访问a_tuple元组中前2个元组,可以执行如下代码:a_tuple=('小鱼儿',20,-1.2)#采用切片方式print(a_tuple[:2])大学计算机-计算思维与程序设计修改元组元素元组是不可变序列,元组中的元素不可以单独进行修改。但是,元组也不是完全不能修改。比如,我们可以对元组进行重新赋值:实例:a_tuple=('小鱼儿',20,-1.2)print(a_tuple)#对元组进行重新赋值a_tuple=('',"重庆人文科技学院")print(a_tuple)大学计算机-计算思维与程序设计删除元组当已经创建的元组确定不再使用时,可以使用del语句将其删除.实例代码:a_tuple=('小鱼儿',20,-1.2)print(a_tuple)#删除a_tuple元组del(a_tuple)print(a_tuple)大学计算机-计算思维与程序设计元组和列表的区别元组和列表同属序列类型,元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。可以理解为,tuple元组是一个只读版本的list列表。大学计算机-计算思维与程序设计集合大学计算机-计算思维与程序设计无序的数据集合体Python提供了两种无序集合体类型:集合和字典集合Python提供了集合类型set,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,用于表示大量数据的无序集合体。集合可以由各种数据组成,数据之间没有次序,并且互不相同。大学计算机-计算思维与程序设计大学计算机-计算思维与程序设计Python集合会将所有元素放在一对大括号{}中,相邻元素之间用“,”分隔,如下所示:{element1,element2,...,elementn}其中,elementn表示集合中的元素,个数没有限制。创建set集合Python提供了2种创建set集合的方法,分别是使用{}创建和使用set()函数将列表、元组等类型数据转换为集合。实例代码:a={1,'c',1,(1,2,3),'c'}set2=set([1,2,3,4,5])set3=set((1,2,3,4,5))set集合常见基本操作(添加、删除、交集、并集、差集)Pythonset集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算。大学计算机-计算思维与程序设计集合是一个无序的,不重复的数据组合,它的主要作用如下:去重,把一个列表变成集合,就自动去重了集合中的元素必须是不可变类型关系测试,测试两组数据之前的交集、差集、并集等关系常用操作图示:大学计算机-计算思维与程序设计实例:a=set([1,2,3,4,5])b=set([4,5,6,7,8])print(a.intersection(b))#交集{4,5}print(a&b)print(a.union(b))#并集{1,2,3,4,5,6,7,8}print(a|b)print(a.difference(b))#差集、得到的是a里有的b里没有的{1,2,3}print(a-b)print(b.difference(a))#差集、得到的是b里有的a里没有的{8,6,7}print(b-a)print(a.symmetric_difference(b))#方向交集、{1,2,3,6,7,8}print(a^b)

字典

大学计算机-计算思维与程序设计

字典

字典也是许多数据的集合,属于可变序列类型。不同之处在于,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。大学计算机-计算思维与程序设计大学计算机-计算思维与程序设计字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如下所示:d={key1:value1,key2:value2}键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。主要操作:通过key访问value。通过key添加key-value对。通过key删除key-value对。通过key修改key-value对。通过key判断指定key-value对是否存在。Python创建字典1)花括号语法创建字典由于字典中每个元素都包含2部分,分别是键和值,因此在创建字典时,键和值之间使用冒号分隔,相邻元素之间使用逗号分隔,所有元素放在大括号{}中。大学计算机-计算思维与程序设计示例:dict1={'笑傲江湖':'令狐冲','神雕侠侣':'杨过','天龙八部':'萧峰'}print(dict1)dict2={'name':'小明','age':18,'sex':'男'}print(dict2)大学计算机-计算思维与程序设计2)通过fromkeys()方法创建字典Python中,还可以使用dict字典类型提供的fromkeys()方法创建所有键值为空的字典.Python字典fromkeys()方法描述Python字典fromkeys()函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。大学计算机-计算思维与程序设计语法fromkeys()方法语法:dict1.fromkeys(seq[,value])参数seq--字典键值列表。value--可选参数,设置键序列(seq)的值。返回值该方法返回一个新字典。注意:fromkeys()方法使用给定的多个key创建字典,这些key对应的value默认都是None;也可以额外传入一个参数作为默认的value。大学计算机-计算思维与程序设计实例:seq=['Google','Runoob','Taobao']dict1=dict1.fromkeys(seq)print("新字典为:%s"%str(dict1))dict1=dict1.fromkeys(seq,10)

print("新字典为:%s"%str(dict1))大学计算机-计算思维与程序设计例如如下代码:#使用列表创建包含2个key的字典a_dict=a_dict.fromkeys(['a','b'])print(a_dict)#{'a':None,'b':None}#使用元组创建包含2个key的字典b_dict=b_dict.fromkeys((13,17))print(b_dict)#{13:None,17:None}#使用元组创建包含2个key的字典,指定默认的valuec_dict=c_dict.fromkeys((13,17),'good')print(c_dict)#{13:'good',17:'good'}大学计算机-计算思维与程序设计3)通过dict()映射函数创建字典dict()#创建空字典{}dict(a='a',b='b',t='t')#传入关键字{'a':'a','b':'b','t':'t'}dict(zip(['one','two','three'],[1,2,3]))#映射函数方式来构造字典{'three':3,'two':2,'one':1}dict([('one',1),('two',2),('three',3)])#可迭代对象方式来构造字典{'three':3,'two':2,'one':1}大学计算机-计算思维与程序设计字典操作实例:通过key访问value:scores={'语文':89}#通过key访问valueprint(scores['语文'])添加key-value对,只需为不存在的key赋值即可:#对不存在的key赋值,就是增加key-value对scores['数学']=93scores[92]=5.7print(scores)#{'语文':89,'数学':93,92:5.7}删除宇典中的key-value对,则可使用del语句。#使用del语句删除key-value对delscores['语文']delscores['数学']print(scores)#{92:5.7}大学计算机-计算思维与程序设计如果要判断字典是否包含指定的key,则可以使用in或notin运算符。需要指出的是,对于dict而言,in或notin运算符都是基于key来判断的。例如如下代码:#判断cars是否包含名为'AUDI'的keyprint('AUDI'incars)#True#判断cars是否包含名为'PORSCHE'的keyprint('PORSCHE'incars)#Falseprint('LAMBORGHINI'notincars)#True大学计算机-计算思维与程序设计如果对dict中存在的key-value对赋值,新赋的value就会覆盖原有的value,这样即可改变dict中的key-value对。例如如下代码:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}#对存在的key-value对赋值,改变key-value对cars['BENS']=4.3cars['AUDI']=3.8print(cars)#{'BMW':8.5,'BENS':4.3,'AUDI':3.8}大学计算机-计算思维与程序设计列表实例:brand=["李宁","耐克","阿迪达斯","python"]slogan=["一切皆有可能","justdoit","impossibleisnothing","让编程改变世界"]print("耐克",slogan[1])耐克justdoitprint("耐克",slogan[brand.index("耐克")])字典实例:dict1={"李宁":"一切皆有可能","耐克":"justdoit","阿迪达斯":"impossibleisnothing","python":"让编程改变世界"}print("阿迪达斯",dict1["阿迪达斯"])列表与字典访问数据的对比:大学计算机-计算思维与程序设计dict字典基本操作(包括添加、修改、删除键值对)Python字典添加键值对如果要为dict添加键值对,只需为不存在的key赋值即可。实现此操作的语法格式如下:dict[key]=valuePython字典添加键值对语法参数参数 含义dict 表示字典名称。key 表示要添加元素的键。注意,既然是添加新的元素,那么就要保证此元素的键和字典中现有元素的键互不相同。value 表示要添加数据的值,只要是Python支持的数据类型就可以。大学计算机-计算思维与程序设计例如,下面代码演示了在现有字典a的基础上,添加新元素的过程:a={'数学':95}print(a)#添加新键值对a['语文']=89print(a)#再次添加新键值对a['英语']=90print(a)大学计算机-计算思维与程序设计字典修改键值对“修改键值对”并不是同时修改某一键值对的键和值,而只是修改某一键值对中的值。由于在字典中,各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,原来键所对应的值就会被新的值替换掉。例如:a={'数学':95,'语文':89,'英语':90}a['语文']=100print(a)大学计算机-计算思维与程序设计Python字典删除键值对如果要删除字典中的键值对,还是可以使用del语句。例如:#使用del语句删除键值对a={'数学':95,'语文':89,'英语':90}dela['语文']dela['数学']print(a)大学计算机-计算思维与程序设计判断字典中是否存在指定键值对如果要判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用in或notin运算符。需要指出的是,对于dict而言,in或notin运算符都是基于key来判断的。例如如下代码:a={'数学':95,'语文':89,'英语':90}#判断a中是否包含名为'数学'的keyprint('数学'ina)#True#判断a是否包含名为'物理'的keyprint('物理'ina)#False备注:通过in(或notin)运算符,我们可以很轻易地判断出现有字典中是否包含某个键,如果存在,由于通过键可以很轻易的获取对应的值,因此很容易就能判断出字典中是否有指定的键值对。大学计算机-计算思维与程序设计字典的常用方法字典由dict类代表,因此我们同样可使用dir(dict)来查看该类包含哪些方法。在交互式解释器中输入dir(dict)命令,将看到如下输出结果:>>>dir(dict)['clear','copy','fromkeys','get','items','keys','pop','popitem','setdefault','update','values']下面介绍字典常用的一些方法。clear()方法clear()用于清空字典中所有的key-value对,对一个字典执行clear()方法之后,该字典就会变成一个空字典。例如如下代码:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}print(cars)#{'BMW':8.5,'BENS':8.3,'AUDI':7.9}#清空cars所有key-value对cars.clear()print(cars)#{}大学计算机-计算思维与程序设计get()方法get()方法其实就是根据key来获取value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的key时,字典会引发KeyError错误;但如果使用get()方法访问不存在的key,该方法会简单地返回None,不会导致错误。例如如下代码:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}#获取'BMW'对应的valueprint(cars.get('BMW'))#8.5print(cars.get('PORSCHE'))#Noneprint(cars['PORSCHE'])#KeyError大学计算机-计算思维与程序设计update()方法update()方法可使用一个字典所包含的key-value对来更新己有的字典。在执行update()方法时,如果被更新的字典中己包含对应的key-value对,那么原value会被覆盖;如果被更新的字典中不包含对应的key-value对,则该key-value对被添加进去。例如如下代码:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}cars.update({'BMW':4.5,'PORSCHE':9.3})print(cars)从上面的执行过程可以看出,由于被更新的dict中己包含key为“AUDI”的key-value对,因此更新时该key-value对的value将被改写;但如果被更新的dict中不包含key为“PORSCHE”的key-value对,那么更新时就会为原字典增加一个key-value对。大学计算机-计算思维与程序设计items()、keys()、values()items()、keys()、values()分别用于获取字典中的所有key-value对、所有key、所有value。这三个方法依次返回dict_items、dict_keys和dict_values对象,Python不希望用户直接操作这几个方法,但可通过list()函数把它们转换成列表。如下代码示范了这三个方法的用法:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}#获取字典所有的key-value对,返回一个dict_items对象ims=cars.items()print(type(ims))#<class'dict_items'>#将dict_items转换成列表print(list(ims))#[('BMW',8.5),('BENS',8.3),('AUDI',7.9)]大学计算机-计算思维与程序设计#访问第2个key-value对print(list(ims)[1])#('BENS',8.3)#获取字典所有的key,返回一个dict_keys对象kys=cars.keys()print(type(kys))#<class'dict_keys'>#将dict_keys转换成列表print(list(kys))#['BMW','BENS','AUDI']#访问第2个keyprint(list(kys)[1])#'BENS'#获取字典所有的value,返回一个dict_values对象vals=cars.values()大学计算机-计算思维与程序设计#将dict_values转换成列表print(type(vals))#[8.5,8.3,7.9]#访问第2个valueprint(list(vals)[1])#8.3从上面代码可以看出,程序调用字典的items()、keys()、values()方法之后,都需要调用list()函数将它们转换为列表,这样即可把这三个方法的返回值转换为列表。在Python2.x中,items()、keys()、values()方法的返回值本来就是列表,完全可以不用list()函数进行处理。当然,使用list()函数处理也行,列表被处理之后依然是列表。大学计算机-计算思维与程序设计pop方法pop()方法用于获取指定key对应的value,并删除这个key-value对。如下方法示范了pop()方法的用法:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}print(cars.pop('AUDI'))#7.9print(cars)#{'BMW':8.5,'BENS':8.3}此程序中,第2行代码将会获取“AUDI”对应的value,并删除该key-value对。popitem()方法popitem()方法用于随机弹出字典中的一个key-value对。此处的随机其实是假的,正如列表的pop()方法总是弹出列表中最后一个元素,实际上字典的popitem()其实也是弹出字典中最后一个key-value对。由于字典存储key-value对的顺序是不可知的,因此开发者感觉字典的popitem()方法是“随机”弹出的,但实际上字典的popitem()方法总是弹出底层存储的最后一个key-value对。大学计算机-计算思维与程序设计如下代码示范了popitem()方法的用法:cars={'AUDI':7.9,'BENS':8.3,'BMW':8.5}print(cars)#弹出字典底层存储的最后一个key-value对print(cars.popitem())#('AUDI',7.9)print(cars)#{'BMW':8.5,'BENS':8.3}由于实际上popitem弹出的就是一个元组,因此程序完全可以通过序列解包的方式用两个变量分别接收key和value。例如如下代码:#将弹出项的key赋值给k、value赋值给vk,v=cars.popitem()print(k,v)#BENS8.3大学计算机-计算思维与程序设计setdefault()方法setdefault()方法也用于根据key来获取对应value的值。但该方法有一个额外的功能,即当程序要获取的key在字典中不存在时,该方法会先为这个不存在的key设置一个默认的value,然后再返回该key对应的value。总之,setdefault()方法总能返回指定key对应的value;如果该key-value对存在,则直接返回该key对应的value;如果该key-value对不存在,则先为该key设置默认的value,然后再返回该key对应的value。如下代码示范了setdefault()方法的用法:cars={'BMW':8.5,'BENS':8.3,'AUDI':7.9}#设置默认值,该key在dict中不存在,新增key-value对print(cars.setdefault('PORSCHE',9.2))#9.2print(cars)#设置默认值,该key在dict中存在,不会修改dict内容print(cars.setdefault('BMW',3.4))#8.5print(cars)大学计算机-计算思维与程序设计使用字典格式化字符串在格式化字符串时,如果要格式化的字符串模板中包含多个变量,后面就需要按顺序给出多个变量,这种方式对于字符串模板中包含少量变量的情形是合适的,但如果字符串模板中包含大量变量,这种按顺序提供变量的方式则有些不合适。可改为在字符串模板中按key指定变量,然后通过字典为字符串模板中的key设置值。例如如下程序:#字符串模板中使用keytemp='教程是:%(name)s,价格是:%(price)010.2f,出版社是:%(publish)s'book={'name':'Python基础教程','price':99,'publish':'重庆人文科技学院'}#使用字典为字符串模板中的key传入值print(temp%book)book={'name':Python小白变大咖','price':159,'publish':'重庆人文科技学院'}#使用字典为字符串模板中的key传入值print(temp%book)大学计算机-计算思维与程序设计本章知识点总结:1、有序序列包括:字符串,列表,元组等概念、创建、删除及其它操作2、无序序列包括:字典,集合等概念、创建、删除及其它操作第四章数据处理的流程控制流程控制是指在程序运行时,对指令运行顺序的控制。通常,程序流程结构分为三种:顺序结构、分支结构和循环结构。顺序结构是程序中最常见的流程结构,按照程序中语句的先后顺序,自上而下依次执行,称为顺序结构;分支结构则根据if条件的真假(True或者False)来决定要执行的代码;循环结构则是重复执行相同的代码,直到整个循环完成或者使用break强制跳出循环。Python语言中,一般来说,我们使用if语句实现分支结构,用for和while语句实现循环结构。流程图,是使用图形来表示流程控制的一种方法,是一种传统的算法表示方法,用特定的图形符号和文字对流程和算法加以说明,叫做算法的图,也称为流程图。符号说明圆角矩形用来表示“开始”与“结束”。矩形用来表示要执行的动作或算法。菱形用来表示问题判断。平行四边形用来表示输入输出。箭头用来代表工作流方向。4.1顺序结构顺序结构是程序中最常见的流程结构,按照程序中语句的先后顺序,自上而下依次执行,称为顺序结构;语句块1语句块3语句块24.1顺序结构实例:输入圆的半径,求圆的周长和面积,并输出结果;计算周长计算面积输入半径输出结果frommathimport*r=eval(input("请输入半径:\n"))l=2*pi*rs=pi*r*rprint("圆的周长:",l)print("圆的面积:",s)4.1顺序结构实例:输入两个数分别放入a,b变量中,交换a,b变量中的值,再输出a,b变量蓝墨水红墨水空瓶4.1顺序结构思路:实例:a=int(input(“请输入第一个数:”))b=int(input(“请输入第二个数:”))f=aa=bb=fprint(“a和b的值分别为:%d,%d”%(a,b))练习:输入矩形的长和宽,求矩形的周长和面积,并输出结果;计算周长计算面积输入长和宽输出结果实例:三个数求其最大值a=int(input(“请输入第一个数:”))b=int(input(“请输入第二个数:”))c=int(input(“请输入第三个数:”))m=max(a,b,c)print(“三个数中最大值为:”m)python中eval和int的区别:

1.eval(参数)函数

(参数一定为字符或字符串)

eval(<字符串>)能够以Python表达式的方式解析并执行字符串,并将返回结果输出。eval()函数将去掉字符串的两个引号,将其解释为一个变量。作用:a.处理含有纯数字的字符串:单引号,双引号,eval()函数都将其解释为int或float类型;三引号则解释为str类型。b.处理不含数字或部分含有数字的字符串类型的字符串:

对于eval()括号中的的字符串(非数字),如果字符串带的是单引号或者是双引号都会引起NameError,这是因为eval()函数在处理字符串时会去掉其两个引号。正确应该使用一个单引号包含一个双引号组成的三引号来包含字符串。python中eval和int的区别:2.int(参数)函数可以将一个数转化为整数(参数一定为数字)>>>int('12',16)有两个地方要注意:1)12要以字符串的形式进行输入,如果是带参数base的话2)这里并不是将12转换为16进制的数,而是说12就是一个16进制的数,int()函数将其用十进制数表示>>>int('0xa',16)>>>int('10',8)Python中的eval方法接受一个字符串参数,并且把字符串里面的内容当成Python代码来执行;eval的缺点是执行速度慢,并且会有安全风险条件语句是用来判断给定的条件是否满足,并根据判断的结果(True或False)决定是否执行或如何执行后续流……程的语句,它使代码的执行顺序有了更多选择,以实现更多的功能。一般来说,条件表达式是由条件运算符和相应的数据所构成的,在Python中,所有合法的表达式都可以作为条件表达式。条件表达式的值只要不是False、0、空值(None)、空列表、空集合、空元组、空字符串等,其它均为True。4.2条件语句单向分支选择结构是最简单的一种形式,不包含elif和else,当表达式值为True时,执行语句块,否则该语句块不执行,继续执行后面的代码。其语法如下。if表达式:

语句块表达式语句块TrueFalse图4.2单分支选择结构4.2条件流程控制

实例:请输入考生成绩,判断及格或不及格,并输出结果;说明:大于等于60,"及格"小于60,"不及格"

代码:score=int(input("请输入考生成绩:\n"))ifscore>=60:print("及格")ifscore<60:print("不及格")

num=int(input("输入一个数字:"))ifnum%2==0:print("你输入的数字可以整除2")

实例:请输入一个数,判断是否可以整除2,并输出结果;双分支语句是由if和else两部分组成,当表达式的值为True时,执行语句块1否则执行语句块2。双分支选择结构的语法如下。if表达式:语句块1else:语句块2表达式语句块1语句块2True

False4.2条件流程控制

实例:请输入考生成绩,判断及格或不及格,并输出结果;score=int(input("请输入考生成绩:\n"))ifscore>=60:print("及格")else:print("不及格")说明:余数为零,"你输入的数字可以整除2"余数不为零,"你输入的数字不能整除2"

实例:请输入一个数,判断可以整除2或不能整除2,并输出结果;num=int(input("输入一个数字:"))ifnum%2==0:print("你输入的数字可以整除2")else:print("你输入的数字不能整除2")代码:多分支选择结构由if、一个或多个elif和一个else子块组成,else子块可省略。一个if语句可以包含多个elif语句,但结尾最多只能有一个else。多分支选择结构的语法如下(嵌套)。if表达式1:语句块1elif表达式2:语句块2……else:语句块n图4.1分支选择结构表达式1语句1语句2TrueFalseTrueFalse表达式2语句n4.3条件流程控制这里的elif,为elseif的缩写,同时需要注意的是:1、else、elif为if语句的子语句块,不能独立使用。2、每个条件后面要使用冒号“:”,表示满足条件后需要执行的语句块,后面几种其它形式的选择结构和循环结构中是冒号也是必须要有的。3、使用缩进来划分语句块,相同缩进数的语句组成一个语句块。4、在Python中没有switch…case语句。4.3条件流程控制说明:狗1岁相当于14岁的人,2岁相当于22岁的人,超过2岁,人的岁数=22+(狗的岁数-2)*5

实例:请输入狗狗的岁数,转换成对应人类的岁数,并输出结果;age=int(input("请输入你家狗狗的年龄:"))ifage<0:print("你是在逗我吧!")elifage==1:print("相当于14岁的人。")elifage==2:print("相当于22岁的人。")elifage>2:human=22+(age-2)*5print("对应人类年龄:",human)代码:

实例:请输入考生成绩,判断成绩等级,并输出结果;说明:小于60分,不及格60到70分,及格70到80分,良好80到90分,优秀90分以上,非常优秀

score=int(input("请输入考生成绩:\n"))ifscore<60: print("不及格")elifscore<70:print("及格")elifscore<80: print("良好")elifscore<90: print("优秀")elifscore<100:print("非常优秀")实例:请输入一个数,判断可以整除2和3、或可以整除2,但不能整除3、或可以整除3,或不能整除2、或不能整除2和3,并输出结果;说明:可以整除2和3可以整除2,但不能整除3可以整除3,不能整除2不能整除2和3代码:num=int(input("输入一个数字:"))ifnum%2==0:ifnum%3==0:print("你输入的数字可以整除2和3")else:print("你输入的数字可以整除2,但不能整除3")else:ifnum%3==0:print("你输入的数字可以整除3,但不能整除2")else:print("你输入的数字不能整除2和3")循环,是我们生活中常见的,比如每天都要吃饭、上课、睡觉等,这就是典型的循环。循环结构是指在程序中需要反复执行某个功能(某个语句动作)而设置的一种程序结构。Python提供for和while两种循环语句。for语句,用来遍历序列对象内的元素,通常用在已知的循环次数;while语句,提供了编写通用循环的方法。语句块TrueFalse循环条件4.4循环流程控制for循环的语法结构跟前面讲的if...else有点类似,记的时候不要记混淆了。for执行时,依次将可迭代对象中的值赋给变量,变量每赋值一次,则执行一次循环体。循环执行结束时,如果有else部分,则执行对应的语句块。else只有在循环正常结束时执行。如果使用break跳出循环,则不会执行else部分,且根据实际编程需求,else部分可以省略。其结构如下。for变量in序列或迭代对象:

循环体(语句块1)else:

语句块2注意:for和else后面冒号不能丢,循环体、语句块缩进严格对齐。4.4循环流程控制

Pythonrange()函数用法

range()函数可创建一个整数列表,一般用在for循环中。函数语法range(start,stop[,step])参数说明:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0,5);stop:计数到stop结束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]没有5step:步长,默认为1。例如:range(0,5)等价于range(0,5,1)[]range()函数用法实例range(10)#从0开始到10,[0,1,2,3,4,5,6,7,8,9]range(1,11)#从1开始到11,[1,2,3,4,5,6,7,8,9,10]range(0,30,5)#步长为5,[0,5,10,15,20,25]range(0,10,3)#步长为3,[0,3,6,9]range(0,-10,-1)#负数[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]range(0),[]range(1,0),[]range()函数用法实例:以下是range在for中的使用,循环出runoob的每个字母:x='runoob'foriinrange(len(x)):

print(x[i])输出结果:runoob例:求1~100的累加和,并输出结果。说明:1.如何表示1~100数字?2.如何存储1~100的累加结果?4.5循环流程控制代码:s=0foriinrange(1,101):s=s+iprint(s)分析:第1次循环:i=1,s=0+1第2次循环:i=2,s=1+2第3次循环:i=3,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论