资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Click to edit Master title style,Python,程序设计教程,授课教师:,职务:,第,2,章,Python,语言基础,课程描述,本章将介绍,Python,语言的基本语法和编码规范,并重点讲解,Python,语言的数据类型、运算符、常量、变量、表达式和常用语句等基础知识,为使用,Python,开发应用程序奠定基础。,本章知识点,2.1,常量和变量,2.2,运算符和表达式,2.3,常用语句,2.4,序列数据结构,2.1,常量和变量,2.1.1,常量,2.1.2,变量,2.1.1,常量,变量是内存中命名的存储位置,与常量不同的是变量的值可以动态变化。,Python,的标识符命名规则如下:,标识符名字的第,1,个字符必须是字母或下划线(,_,);,标识符名字的第,1,个字符后面可以由字母、下划线(,_,)或数字(,09,)组成;,标识符名字是区分大小写的。也就是说,Score,和,score,是不同的。,【,例,2-1】,在下面的代码中,定义了一个字符串变量,a,、数值变量,b,和布尔类型变量,c,。,a = ,这是一个常量,;,b = 2;,c = True,【,例,2-2】,变量值传递的例子。,a = ,这是一个变量,;,b = a;,print(b);#,此时变量,b,的值应等于变量,a,的值,print (n);,a = ,这是另一个变量,;,print(b); #,对变量,$a,的操作将不会影响到变量,b,运行结果如下:,这是一个变量,这是一个变量,变量赋值过程的示意图,id(),函数,可以使用,id(),函数输出变量的地址,语法如下:,id(,变量名,),【,例,2-3】,用,id(),函数输出变量地址的示例程序:,str1 = ,这是一个变量,;,print(,变量,str1,的值是:,+str1);,print(,变量,str1,的地址是:,%d %(id(str1);,str2 = str1;,print(,变量,str2,的值是:,+str2);,print(,变量,str2,的地址是:,%d %(id(str2);,str1 = ,这是另一个变量,;,print(,变量,str1,的值是:,+str1);,print(,变量,str1,的地址是:,%d %(id(str1);,print(,变量,str2,的值是:,+str2);,print(,变量,str2,的地址是:,%d,%(id(str2);,2.1.3,类型转换,1,转换为数字,1,转换为数字,(,1,)使用,int(),函数将字符串转换为整数,语法如下:,int(x ,base ),参数,x,是待转换的字符串,参数,base,为可选参数,指定转换后整数的进制,默认为,10,进制。,(,2,)使用,long(),函数将字符串转换为长整数,语法如下:,long(x ,base ),参数的含义与,int(),函数相同。,(,3,)使用,float(),函数将字符串或数字转换为浮点数,语法如下:,float (x),参数,x,是待转换的字符串或数字。,(,4,)使用,eval (),函数计算字符串中的有效,Python,表达式,并返回结果,语法如下:,eval(str),参数,str,是待计算的,Python,表达式字符串。,【,例,2-4】,a = 1;,b = int(a)+1;,print(b);,【,例,2-5】,a = 1+2;,print(eval(a);,运行结果为,3,。,2,转换为字符串,(,1,)使用,str (),函数将数值转换为字符串,语法如下:,str (x),参数,x,是待转换的数值。,(,2,)使用,repr (),函数将对象转换为可打印字符串,语法如下:,repr(obj),参数,obj,是待转换的对象。,1.2.2,执行,Python,脚本文件,(,3,)使用,chr (),函数将一个整数转换为可对应,ASCII,的字符,语法如下:,chr(,整数,),(,4,)使用,ord(),函数将一个字符转换为对应的,ASCII,,语法如下:,ord(,字符,),【,例,2-6】,print(chr(65);,print(ord(A);,运行结果为。,A,65,(,5,)使用,hex(),函数将一个整数转换为一个十六进制字符串,语法如下:,chr(,整数,),(,6,)使用,oct(),函数将一个整数转换为一个八进制字符串,语法如下:,oct(,字符,),【,例,2-7】,使用,hex(),函数和,oct(),函数打印,8,的十六进制字符串和八进制字符串。,print(hex(8);,print(oct(8);,输出的结果如下:,0x8,0o10,十六进制字符串以,0x,开头,八进制字符串以,0o,开头。,2.2,运算符和表达式,运算符是程序设计语言的最基本元素,它是构成表达式的基础。本节将介绍,Python,语言运算符和表达式。,2.2.1,运算符,Python,支持算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符、字符串运算符、成员运算符和身份运算符等基本运算符。,1,算术运算符,位运算符,具体描述,例,子,+,相加运算,1+2,的结果是,3,-,相减运算,100-1,的结果是,99,*,乘法运算,2*2,的结果是,4,/,除法运算,4/2,的结果是,2,%,求模运算,10 % 3,的结果是,1,*,幂运算。,x*y,返回,x,的,y,次幂,2*3,的结果是,8,/,整除运算,即返回商的整数部分,9/2,的结果,4,2,赋值运算符,位运算符,具体描述,例,子,=,直接赋值,x =3;,将,3,赋值到变量,x,中,+=,加法赋值,x +=3;,等同于,x = x+3;,-=,减法赋值,x -=3;,等同于,x = x-3;,*=,乘法赋值,x *=3;,等同于,x = x*3;,/=,除法赋值,x /=3;,等同于,x = x/3;,%=,取模赋值,x =3;,等同于,x = x%3;,*=,幂赋值,x *=3;,等同于,x = x*3;,/=,整除赋值,x /=3;,等同于,x = x/3;,【,例,2-8】,x =3,x += 3,print(x),x -= 3,print(x),x *= 3,print(x),x /= 3,print(x),运行结果如下:,6,3,9,3.0,3,位运算符,位运算符,具体描述,&,按位与运算,,运算符查看两个表达式的二进制表示法的值,并执行按位,“,与,”,操作。只要两个表达式的某位都为,1,,则结果的该位为,1,;否则,结果的该位为,0,|,按位或运算,,运算符查看两个表达式的二进制表示法的值,并执行按位,“,或,”,操作。只要两个表达式的某位有一个为,1,,则结果的该位为,1,;否则,结果的该位为,0,按位异或运算。异或的运算法则为:,0,异或,0=0,,,1,异或,0=1,,,0,异或,1=1,,,1,异或,1=0,按位非运算。,0,取非运算的结果为,1,;,1,取非运算的结果为,0,位右移运算,即所有位向右移,4,比较运算符,比较运算符,具体描述,=,等于运算符(两个,=,)。例如,a=b,,如果,a,等于,b,,则返回,True,;否则返回,False,!=,不等运算符。例如,a!=b,,如果,a,不等于,b,,则返回,True,;否则返回,False,不等运算符,与,!=,相同,大于运算符,=,大于等于运算符,5,逻辑运算符,逻辑运算符,具体描述,and,逻辑与运算符。例如,a and b,,当,a,和,b,都为,True,时等于,True,;否则等于,False,or,逻辑或运算符。例如,a or b,,当,a,和,b,至少有一个为,True,时等于,True,;否则等于,False,not,逻辑非运算符。例如,not a,,当,a,等于,True,时,表达式等于,False,;否则等于,True,【,例,2-9】,x =True,y = False,print(x and y = , x and y),print(x or y = , x or y),print(not x = , not x),print(not y = , not y),运行结果如下:,x and y = False,x or y = True,not x = False,not y = True,6,字符串运算符,逻辑运算符,具体描述,+,字符串连接,*,重复输出字符串,获取字符串中指定索引位置的字符,索引从,0,开始, start, end,截取字符串中的一部分,从索引位置,start,开始到,end,结束,in,成员运算符,如果字符串中包含给定的字符则返回,True,not in,成员运算符,如果字符串中包含给定的字符返回,True,r,或者,R,指定原始字符串。原始字符串是指所有的字符串都是直接按照字面的意思来使用,没有转义字符、特殊字符或不能打印的字符。 原始字符串字符串的第一个引号前加上字母,r,或,R,【,例,2-10】,b = hello ;,a = b + world!;,print(a);,print (a*2);,print (rhellonworld!);,运行结果如下:,hello world!,hello world!hello world!,hellonworld!,7,运算符优先级,运算符,具体描述,*,指数运算的优先级最高, + -,逻辑非运算符和正数,/,负数运算符。注意,这里的,+,和,-,不是加减运算符,* / % /,乘、除、取模和取整除,+ -,加和减, = !=,大于、等于和不等于,%= /= /= -= += *= *=,赋值运算符,is,is not,身份运算符,in,not in,成员运算符,not,or,and,逻辑运算符,2.2.2,表达式,a = b + c;,a = b - c;,a = b * c;,a = b / c;,a = b % c;,a += 1;,b = a*2;,2.3,常用语句,2.3.1,赋值语句,2.3.2,条件分支语句,3.3.3,循环语句,2.3.4 try-except,语句,2.3.1,赋值语句,赋值语句是,Python,语言中最简单、最常用的语句。通过赋值语句可以定义变量并为其赋初始值。在,2.2.1,小节介绍赋值运算符时,已经涉及到了赋值语句,例如:,a = 2;,b = a + 5;,【,例,2-11】,a = 10;,a += 1;,print (a);,a*= 10;,print (a);,a*= 2;,print (a);,运行结果如下:,11,110,12100,2.3.2,条件分支语句,1,if,语句,1,if,语句,if,条件表达式,:,语句块,【,例,2-12】 if,语句的例子,if a 10:,print(,变量,a,大于,10);,如果语句块中包含多条语句,则这些语句必须拥有相同的缩进。例如:,if a 10,:,print(,变量,a,大于,10);,a = 10;,【,例,2-13】,嵌套,if,语句的例子,if a 10,:,print(,变量,a,大于,10);,if a 100:,print(,变量,$a,大于,100);,2,else,语句,if,条件表达式,:,语句块,1,else:,语句块,2,3,elif,语句,if,条件表达式,1,语句块,1,elif,条件表达式,2,语句块,2,elif,条件表达式,3,语句块,3,else,语句块,n,【,例,2-15】,import datetime,str = ,今天是,;,d=datetime.datetime.now(),print(d.weekday(),if d.weekday()=0:,str += ,星期一,;,elif d.weekday()=1:,str += ,星期二,;,elif d.weekday()=2:,str += ,星期三,;,elif d.weekday()=3:,str += ,星期四,;,elif d.weekday()=4:,str += ,星期五,;,elif d.weekday()=5:,str += ,星期六,;,else:,str += ,星期日,;,print(str),weekday(),方法的返回值,返回值,具体描述,0,星期一,1,星期二,2,星期三,3,星期四,4,星期五,5,星期六,6,星期日,3.3.3,循环语句,1,while,语句,1,while,语句,while,条件表达式,:,循环语句体,3.3.3,循环语句,1,while,语句,2,for,语句,3,continue,语句,4,break,语句,1,while,语句,while,条件表达式,:,循环语句体,【,例,2-16】,i = 1;,sum = 0;,while i11:,sum += i;,i+= 1;,print(sum),2,for,语句,for i in range(start, end):,循环体,【,例,2-17】,i = 1;,sum = 0;,for i in range(1, 11):,print(i),sum+=i,print(sum),3,continue,语句,【,例,2-18】,如果只计算,1100,之间偶数之和,可以使用下面的代码:,i = 1;,sum = 0;,for i in range(1, 101):,if i%2 = 1:,continue,sum+=i,print(sum),4,break,语句,【,例,2-19】,将,【,例,2-16】,修改为使用,break,语句跳出循环体。,i = 1;,sum = 0;,while True:,if i= 11:,break;,sum += i;,i+= 1;,print(sum),2.3.4 try-except,语句,try:,except , ,. as :,finally:,【,例,2-20】,i = 10;,print(30 / (i - 10);,程序中存在一个,30/0,的错误,运行该程序会出现下面的报错信息。,Traceback (most recent call last):,File D:MyBooks2014python,源代码,02,例,2-20.py, line 2, in ,print(30 / (i - 10);,【,例,3.21】,print(30 / (i - 10),except Exception as e:,print(e);,finally:,print(,执行完成,);,2.4,序列数据结构,2.4.1,列表,2.4.2,元组(,tuple,),2.4.1,列表,列表(,List,)是一组有序存储的数据。例如,饭店点餐的菜单就是一种列表。列表具有如下特性:, 和变量一样,每个列表都有一个唯一标识它的名称。, 一个列表的元素应具有相同的数据类型。, 每个列表元素都有索引和值两个属性,索引是一个从,0,开始的整数,用于标识元素在列表中的位置;值当然就是元素对应的值。,1,定义列表,下面就是一个列表的定义。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,2,打印列表,print(,列表名,),【,例,2-22】,打印列表的内容。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,print(menulist),运行结果如下:,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,3,获取列表长度,Len(,数组名,),4,访问列表元素,列表名,index,【,例,2-23】,访问列表元素的例子,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,print(menulist0),print(menulist3),程序打印列表中索引为,0,和,3,的元素,运行结果如下:,红烧肉,油焖大虾,5,添加列表元素,列表,.append(,新值,),【,例,2-24】,通过,append(),函数添加列表元素的例子。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,menulist.append(,北京烤鸭,),print(menulist),程序调用,append(),函数在列表,menulist,的尾部添加元素,北京烤鸭,,运行结果如下:,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾, ,北京烤鸭,insert(),函数,列表,. insert(,插入位置,新值,),【,例,2-25】,通过,insert(),函数添加列表元素的例子。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,menulist.insert(4, ,北京烤鸭,),print(menulist),,运行结果如下:,红烧肉, ,北京烤鸭, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,extend(),函数,列表,1.extend(,列表,2),【,例,2-26】,通过,extend(),函数添加列表元素的例子。,menulist1 = ,红烧肉, ,熘肝尖,menulist2 = ,西红柿炒鸡蛋, ,油焖大虾,menulist1. extend (menulist2),print(menulist1),运行结果如下:,红烧肉, ,北京烤鸭, ,熘肝尖, ,西红柿炒鸡蛋, ,油焖大虾,6,合并,2,个列表,可以使用,+,将,2,个列表合并,得到一个新的列表,具体方法如下:,列表,3=,列表,1 +,列表,2,【,例,2-27】,合并,2,个列表的例子。,menulist1 = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋,menulist2 = ,北京烤鸭, ,西红柿炒鸡蛋, ,油焖大虾,menulist3 = menulist1 + menulist2,print(menulist3),运行结果如下:,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋, ,北京烤鸭, ,西红柿炒鸡蛋, ,油焖大虾,7,删除列表元素,del,列表名,索引,【,例,2-28】,使用,del,语句删除列表元素的例子。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋,del menulist0,print(menulist),运行结果如下:,熘肝尖, ,西红柿炒鸡蛋,7,删除列表元素,del,列表名,索引,【,例,2-28】,使用,del,语句删除列表元素的例子。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋,del menulist0,print(menulist),运行结果如下:,熘肝尖, ,西红柿炒鸡蛋,8,定位列表元素,可以使用,index(),函数获取列表中某个元素的索引。其基本语法如下:,列表,.index(,元素值,),函数返回元素值在列表中某个元素的索引,如果不存在,则会抛异常。,【,例,2-29】,使用,index (),函数的例子。,menulist = ,红烧肉, ,熘肝尖, ,西红柿炒鸡蛋,print(menulist.index(,红烧肉,),print(menulist.index(,西红柿炒鸡蛋,),运行结果如下:,0,2,9,遍历列表元素,遍历列表就是一个一个地访问列表元素,这是使用列表时的常用操作。,可以使用,for,语句和,range(),函数遍历列表索引,然后通过索引依次访问每个列表元素,方法如下:,for i in range(len(list):,访问,listi,【,例,2-30】,for,语句和,range(),函数遍历列表。,list = ,王二, ,张三, ,李四, ,王五,;,for i in range(len(list):,print(listi);,程序的运行结果如下:,王二,张三,李四,王五,使用,for,语句和,enumerate(),函数同时遍历列表的元素索引和元素值,for,索引,元素值,in enumerate(list):,访问索引和元素值,【,例,2-31】 for,语句和,enumerate(),函数遍历列表。,list = ,王二, ,张三, ,李四, ,王五,;,for index,value in enumerate(list):,print(,第,%d,个元素值是,【%s】 %(index, value);,程序的运行结果如下:,第,0,个元素值是,【,王二,】,第,1,个元素值是,【,张三,】,第,2,个元素值是,【,李四,】,第,3,个元素值是,【,王五,】,10,列表排序,列表排序操作值按列表元素值的升序、降序或反序重新排列列表元素的位置。,可以使用,sort(),函数对列表进行升序排列,其语法如下:,列表,.sort(),【,例,2-32】,list = apple, banana, pear, grape;,list.sort(),print(list),程序的运行结果如下:,apple, banana, grape, pear,reverse(),函数,可以使用,reverse(),函数对列表进行反序排列,其语法如下:,列表,.reverse(),调用,reverse (),函数后,列表元素被反序排列。,【,例,2-33】,使用,reverse (),函数对列表进行反序排列。,list = apple, Banana, pear, grape;,list.reverse(),print(list),程序的运行结果如下:,grape, pear, Banana, apple,【,例,2-34】,list = apple, banana, pear, grape;,list.sort(),list.reverse(),print(list),程序的运行结果如下:,pear, grape, banana, apple,11,产生一个数值递增列表,使用,range(),函数可以产生一个数值递增列表,它的基本语法结构如下:,range(start, end),参数说明如下。,start,:一个整数,指定产生的列表的起始元素值。,start,为可选参数,默认值为,0,。,end,:一个整数,指定产生的列表的结束元素值。,range(),函数返回一个列表,该列表由从,start,开始至,end,结束的整数组成。,【,例,2-35】,list1 = range(10),list2 = range(11, 20),#,打印,list1,for index,value in enumerate(list1):,print(list1,的第,%d,个元素值是,【%s】 %(index, value);,#,打印,list2,for index,value in enumerate(list2):,print(list2,的第,%d,个元素值是,【%s】 %(index, value);,12,定义多维列表,【,例,2-36】,一个定义二维数列表的例子。,list2 = CPU, ,内存, ,硬盘,声卡,;,【,例,2-36】,中列表,list2,的内容,【,例,2-37】,打印二维列表,list2 = CPU, ,内存, ,硬盘,声卡,;,for i in range(len(list2):,print(list2i);,运行结果如下:,CPU, ,内存,硬盘, ,声卡,【,例,2-38】,list2 = CPU, ,内存, ,硬盘,声卡,;,for i in range(len(list2):,list1 = list2i;,for j in range(len(list1):,print(list1j),运行结果如下:,CPU,内存,硬盘,声卡,使用下面的方法获取二维列表元素的值,列表名,索引,1 ,索引,2,【,例,2-39】,list2 = CPU, ,内存, ,硬盘,声卡,;,for i in range(len(list2):,for j in range(len(list2i):,print(list2ij),运行结果,CPU,内存,硬盘,声卡,2.4.2,元组(,tuple,),元组与列表非常相似,它具有如下特性:, 一经定义,元组的内容不能改变。, 元组元素可以存储不同类型的数据,可以是字符串、数字,甚至是元组。, 元组元素由圆括号括起来,例如:,t = (1, 2, 3, 4),1,访问元组元素,与列表一样,可以使用索引访问元组元素,方法如下:,元组,索引,【,例,2-40】,访问元组元素的例子。,t = (1, 2, 3, 4),print(t0),print(t3),程序打印元组中索引为,0,和,3,的元素,运行结果如下:,1,4,2,获取元组长度,元组长度指元组中元素的数量。可以通过,len(),函数获取元组的长度,方法如下:,Len(,元组名,),【,例,2-41】,打印元组的长度。,t = (1, 2, 3, 4),print(len(t),运行结果为,4,。,3,遍历元组元素,for i in range(len(tuple):,访问,tuple i,【,例,2-42】 for,语句和,range(),函数遍历列表。,t = (,王二, ,张三, ,李四, ,王五,);,for i in range(len(t):,print(ti);,程序的运行结果如下:,王二,张三,李四,王五,使用,for,语句和,enumerate(),函数同时遍历列表的元素索引和元素值,for,索引,元素值,in enumerate(list):,访问索引和元素值,。,【,例,2-43】 for,语句和,enumerate(),函数遍历列表,list = ,王二, ,张三, ,李四, ,王五,;,for index,value in enumerate(list):,print(,第,%d,个元素值是,【%s】 %(index, value);,程序的运行结果如下:,第,0,个元素值是,【,王二,】,第,1,个元素值是,【,张三,】,第,2,个元素值是,【,李四,】,第,3,个元素值是,【,王五,】,4,排序,因为元组的内容不能改变,所以元组没有,sort(),函数。可以将元组转换为列表,然后再对列表排序,最后将排序后的列表赋值给元组。,可以使用下面的方法将元组转换为列表。,列表对象,= list(,元组对象,),将列表转换为元组的方法如下:,元组对象,= tuple(,列表对象,),【,例,2-44】,对元组进行排列。,t = (apple, banana, pear, grape);,l = list(t);,l.sort();,t = tuple(l);,print(t),程序的运行结果如下:,(apple, banana, grape, pear),使用,reverse(),函数对元组进行反序排列,元组,.reverse(),调用,reverse (),函数后,元组元素被反序排列。,【,例,2-45】,使用,reverse (),函数对元组进行反序排列。,t = (apple, banana, pear, grape);,l = list(t);,l.reverse(),t = tuple(l);,print(t),2.4.3,字典,1,定义字典,字典元素使用,括起来,例如,下面的语句可以定义一个空字典。,d1 = ;,也可以在定义字典时指定里面的元素,每个元素由键和值组成,键和值之间由冒号(,:,)分割,元素间由逗号(,)分割。例如:,d2=name:,小明, sex:,男,age:18, score:80,2,打印字典,可以直接使用,print(),函数打印字典,方法如下:,print(,字典名,),【,例,2-46】,打印字典的内容。,d=name:,小明, sex:,男,age:18, score:80,print(d),运行结果如下:,score: 80, name: ,小明, age: 18, sex: ,男,3,获取字典长度,Len(,字典名,),【,例,2-47】,打印字典的长度。,d=name:,小明, sex:,男,age:18, score:80,print(len(d),运行结果为,4,。,4,访问字典元素,字典由字典元素组成。对字典的管理就是对字典元素的访问和操作。可以通过下面的方法获取字典元素的值:,字典名,key,key,是元素的键。,【,例,2-48】,d=name:,小明, sex:,男,age:18, score:80,print(dname),print(dsex),print(dage),print(dscore),程序打印列表中索引为,0,和,3,的元素,运行结果如下:,小明,男,18,80,5,添加字典元素,可以通过赋值在字典中添加元素,具体方法如下:,字典,键, =,值,如果字典中不存在指定键,则添加;否则修改键值。,【,例,2-49】,添加字典元素的例子。,d=name:,小明, sex:,男,age:18,dscore = 80,print(d),运行结果如下:,sex: ,男, age: 18, name: ,小明, score: 80,6,合并,2,个字典,可以使用,update(),函数将,2,个字典合并,具体方法如下:,字典,1.update(,字典,2),【,例,2-50】,合并,2,个字典的例子。,d1=name:,小明, sex:,男,d2=age:18, score: 80,d1.update(d2),print(d1),运行结果如下:,age: 18, name: ,小明, score: 80, sex: ,男,7,删除字典元素,使用,pop(),方法可以删除指定的字典元素,并返回删除的元素值。具体方法如下:,字典名,.pop(,键,),【,例,2-51】,使用,pop(),方法删除字典元素的例子。,d=age: 18, name: ,小明, score: 80, sex: ,男,d.pop(score),print(d),运行结果如下:,name: ,小明, sex: ,男, age: 18,8,判断字典是否存在元素,可以使用,in,关键字判断字典中是否存在指定键的元素。其基本语法如下:,键,in,字典,如果字典中存在指定键的元素,则表达式返回,True,;否则返回,False,。,【,例,2-52】,使用,in,关键字的例子。,d=age: 18, name: ,小明, score: 80, sex: ,男,if name1 in d:,print(dname1),else:,print(,不包含键位,name1,的元素,),运行结果如下:,不包含键位,name1,的元素,9,遍历字典元素,可以使用,for. in,语句遍历字典的键和值,方法如下:,for key in,字典,.keys(): #,遍历字典的键,访问 字典,key,for key in,字典,.values(): #,遍历字典的值,访问 字典,key,【,例,2-53】,d=age: 18, name: ,小明, score: 80, sex: ,男,for key in d.keys(): #,遍历字典的键,print(,键,+key+ ,的值:,+ dkey);,程序的运行结果如下:,键,score,的值:,80,键,name,的值:小明,键,sex,的值:男,键,age,的值:,18,【,例,2-54】,d=age: 18, name: ,小明, score: 80, sex: ,男,for value in d.values(): #,遍历字典的值,print(value);,程序的运行结果如下:,小明,18,男,80,10,清空字典,使用,clear(),方法可以清空指定的字典所有元素。具体方法如下:,字典名,.clear(),【,例,2-55】,使用,clear (),方法清空字典元素的例子。,d=age: 18, name: ,小明, score: 80, sex: ,男,d. clear(),print(d),运行结果如下:,11,字典的嵌套,字典里面还可以嵌套字典,例如,name:first:Johney,last:Lee,age:40,可以通过下面的方式访问嵌套字典。,字典,键,键,【,例,2-56】,d=name:first:Johney,last:Lee,age:40,print(dname first),运行结果如下:,Johney,2.4.4,集合,集合由一组无序排列的元素组成,可以分为可变集合(,set,)和不可变集合(,frozenset,)。可变集合创建后可以添加元素,修改元素和删除元素。而不可变集合创建后则不能改变。,1,创建集合,创建可变集合的例子。,s = set(python),【,例,2-57】,创建可变集合的例子。,s = set(python),print(type(s),print(s),运行结果如下:,t, o, y, p, n, h,使用,frozenset (),方法创建不可变集合,s = frozenset(python),【,例,2-58】,创建不可变集合的例子。,fs = frozenset(python),print(type(fs),print(fs),运行结果如下:,frozenset(n, y, h, o, p, t),2,获取集合长度,Len(,集合名,),【,例,2-59】,打印集合的长度。,s = set(python),print(len(s),运行结果为,6,。,3,访问集合元素,【,例,2-60】,遍历集合元素的例子。,s = set(python),s = set(python),for e in s:,print(e),运行结果如下:,n,o,t,y,h,p,4,添加集合元素,可以通过调用,add(),方法在集合中添加元素,具体方法如下:,集合,.add(,值,),提示,只能在可变集合中添加元素。不能在不可变集合中添加元素。,【,例,2-61】,添加一个集合元素的例子,s = set(python),s.add(0),print(s),运行结果如下:,t, y, h, p, o, 0, n,update(),方法将另外一个集合的元素添加到指定集合中,集合,. update(,值,),【,例,2-62】,添加多个集合元素的例子。,s = set(1, 2, 3),s.update(4, 5, 6),print(s),运行结果如下:,1, 2, 3, 4, 5, 6,5,删除集合元素,可以使用,remove(),方法删除指定的集合元素。具体方法如下:,集合名,. remove(,值,),使用,clear(),方法可以清空指定的集合所有元素。具体方法如下:,集合名,.clear(),【,例,2-63】,s = set(1, 2, 3),s.remove(1),print(s),s.clear(),print(s),运行结果如下:,2 ,3,set(),6,判断集合是否存在元素,可以使用,in,判断集合中是否存在指定键的元素。其基本语法如下:,值,in,集合,如果集合中存在指定值的元素,则表达式返回,True,;否则返回,False,。,【,例,2-64】,判断集合是否存在元素的例子。,s = set(1, 2, 3),if 2 in s:,print(,存在,),else:,print(,不存在,),运行结果如下:,存在,7,遍历集合元素,可以使用,for. in,语句遍历集合的值,方法如下:,for element in,集合,:,访问,element,【,例,2-65】,使用,for. in,语句遍历集合。,s = set(1, 2, 3),for e in s: #,遍历集合,print(e);,程序的运行结果如下:,1,2,3,8,子集和超集,操作符,实例,具体描述,=,A=B,如果,A,等于,B,,则返回,True,;否则返回,False,!=,A!=B,如果,A,不等于,B,,则返回,True,;否则返回,False,AB,如果,A,是,B,的真子集,则返回,True,;否则返回,False,=,A,AB,如果,A,是,B,的真超集,则返回,True,;否则返回,False,=,A=B,如果,A,是,B,的超集,则返回,True,;否则返回,False,【,例,2-66】,s1 = set(1, 2),s2 = set(1, 2, 3),if s1!=s2:,if s1s1:,print(s2,是,s1,的超集,),运行结果如下:,s1,是,s2,的真子集,s2,是,s1,的超集,9,集合的并集,可以使用,|,操作符计算两个集合的并集。例如:,s = s1 | s2,【,例,2-67】,使用,|,操作符计算两个集合的并集。,s1 = set(1, 2),s2 = set(3, 4),s = s1 | s2,print(s),运行结果如下:,1, 2, 3, 4,使用,union(),方法计算两个集合的并集,s = s1.union(s2),【,例,2-68】,使用,union(),方法计算两个集合的并集。,s1 = set(1, 2),s2 = set(3, 4),s = s1.union(s2),print(s),运行结果如下:,1, 2, 3, 4,10,集合的交集,集合的交集由所有既属于集合,A,又属于集合,B,的元素组成。,可以使用,&,操作符计算两个集合的交集。例如:,s = s1 & s2,【,例,2-69】,s1 = set(1, 2, 3),s2 = set(3, 4),s = s1 & s2,print(s),运行结果如下:,3,使用,intersection (),方法计算两个集合的并集,s = s1. intersection (s2),【,例,2-70】,使用,intersection(),方法计算两个集合的并集。,s1 = set(1, 2, 3),s2 = set(3, 4),s = s1.intersection(s2),print(s),11,集合的差集,集合的差集由所有属于集合,A,但不属于集合,B,的元素组成。,可以使用,-,操作符计算两个集合的差集。例如:,s = s1 - s2,【,例,2-71】,使用,-,操作符计算两个集合的差集。,s1 = set(1, 2, 3),s2 = set(3, 4),s = s1 - s2,print(s),运行结果如下:,1, 2,使用,difference (),方法计算两个集合的差集,s = s1. difference(s2),【,例,2-72】,使用,difference(),方法计算两个集合的并集。,s1 = set(1, 2, 3),s2 = set(3, 4),s = s1. difference(s2),print(s),
展开阅读全文