Python语言程序设计课件1第3章 Python语言的基本数据类型_第1页
Python语言程序设计课件1第3章 Python语言的基本数据类型_第2页
Python语言程序设计课件1第3章 Python语言的基本数据类型_第3页
Python语言程序设计课件1第3章 Python语言的基本数据类型_第4页
Python语言程序设计课件1第3章 Python语言的基本数据类型_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

学习目标了解掌握熟悉Python语言中数据与其他语言的共性与区别13深浅拷贝的含义与实现方法2各种数据类型的定义与使用方法本章主讲内容主讲内容Speechcontent3.2字符串3.3列表3.1数值数据3.4元组3.5字典3.9小结3.6集合3.7深浅拷贝3.8综合应用案例数据含义与讲解内容数据即变量的值,变量是用来反映/保持状态以及状态变化的。在程序设计语言中,针对不同的状态就用不同类型的数据去标识。本章将介绍python的数字、字符串、布尔、列表、元组、字典与集合等基本类型的数据。Python最大的特色就是引入了列表、元组、字典与集合等特色的数据类型,这些类型数据的使用能改变读者的编程思维。主讲内容Speechcontent3.1.2Python3中与数值相关函数3.1数值数据1.1Python简介3.1.1Python3支持的数值数据类型3.1.3Python3中数值函数的应用数值数据数字数据类型用于存储数值。在Python中,数值数据属于不可变数据类型。所谓不可变类型就是当为变量分配数值数据时,Python将创建数值对象,且把变量指向创建的数值对象,当更改指向数值对象变量的值时,Python就重新创建新值的数值对象,把变量重新指向新的数值对象,而数值对象本身是不能被修改的。数值数据不可变数据类型的含义。X=1X=x+1栈内存堆内存X12Python3支持的数值数据类型Python3支持的数值数据类型有带符号整数,浮点实数与复数三种:

1.Int(有符号整数):该类型通常被称为整数,是没有小数点的正或负数。

注意:

Python3中的整数是不限大小的。

2.

Float(浮点实数值):也称为浮点数,它们表示实数。例如,2.5,3.14就是一个浮点数,浮点数也可以用科学符号表示,如+2.5E3或+2.5e3,表示2.5乘10的三次方。

3.complex(复数):复数是以a+bj的形式,其中a和b是浮点,J(或j)表示-1的平方根(虚数)。数据的实部是a,虚部是b。

Python3支持的数值数据类型

在python中可以用十进制、十六进制或八进制形式表示整数,如果用十六进制表示整数,就在十六进制数前加上“0x”或“0X”,如果用八进制表示整数,就在八进制数前加上“0o”或“0O”。Python3中与数值相关函数数值函数编号函数描述1abs(x)x的绝对值。2ceil(x)x的上限,不小于x的最小整数。4exp(x)x的指数,返回e的x次幂。5floor(x)不大于x的最大整数。6log(x)x的自然对数(x>0)。7log10(x)以基数为10的x的对数(x>0)。8max(x1,x2,…)给定参数中的最大值,最接近正无穷大值。9min(x1,2,…)给定参数中的最小值,最接近负无穷小值。10modf(x)将x的分数和整数部分切成两项放入元组中,两个部分与x具有相同的符号。整数部分作为浮点数返回。11pow(x,y)x的y次幂。12round(x[,n])x从小数点舍入到n位数。round(0.5)结果为

1.0,

round(-0.5)

结果为

-1.0。13sqrt(x)x的平方根(x>0)。Python3中与数值相关函数函数描述示例int(x)将x转换为纯整数。int(3.14)返回结果是整数3。float(x)将x转换为浮点数。Float(3)返回结果是整数3.0。数值类型转换函数Python3中与数值相关函数三角函数编号函数描述1acos(x)返回x的弧余弦值,以弧度表示。2asin(x)返回x的弧线正弦,以弧度表示。3atan(x)返回x的反正切,以弧度表示。4atan2(y,x)返回atan(y/x),以弧度表示。5cos(x)返回x弧度的余弦。6hypot(x,y)返回欧几里得规范,sqrt(x*x+y*y)7sin(x)返回x弧度的正弦。8tan(x)返回x弧度的正切值。9degrees(x)将角度x从弧度转换为度。10radians(x)将角度x从角度转换为弧度。Python3中与数值相关函数随机函数编号函数描述1choice(seq)来自列表,元组或字符串的随机项目。2randrange([start,]stop[,step])从范围(start,stop,step)中随机选择的元素。3random()返回随机浮点数r(0<=r<1),4seed([x])用来确定生成的随机数,如果使用相同的X值,则生成的随机数相同。函数返回值为None。5shuffle(lst)将列表的元素随机化,函数返回值为None。6uniform(x,y)返回随机浮点数

r

(x<=r<y)。注意:在python中要使用随机函数必须导入random包。主讲内容Speechcontent3.2.2转义字符3.2字符串1.1Python简介3.2.1访问字符串中的字符与更新字符串3.2.3字符串特殊运算符3.2.5字符串内置方法3.2.4字符串格式化运算字符串

字符串是Python中最受欢迎、最常用的一种数据类型。在python中,加了引号(单引号或双引号)的字符就是字符串类型,用于标识描述性的内容,如姓名,性别,国籍,种族等等。注意:字符串也是不可变数据类型。

字符串的定义方法如下:str1='HelloWorld!’str2=str('HelloWorld!')

#用构造方法创建字符串类型数据。

字符串数据类型与数值数据一样是不可变数据类型,当更改字符串值时会导致重新创建与分配对象。

注意:python并没有字符类型,字符会被视为长度为1的字符串。访问字符串中的字符与更新字符串str1=“helloworld”

print(“str1[0:4]:”,str1[0:4])#切片加上索引,不包括索引为4的字符

print("lastcharacteris:",str1[10])#使用索引#输出如下:str1[0:4]:helllastcharacteris:d

在python3中要访问子串,需使用方括号的切片加上索引或直接使用索引来获取子字符串。例如:访问字符串中的字符与更新字符串str1=“helloworld”print(id(str1))str1=str1[:6]+'Python’print(id(str1))#此处的id的值与前面不一样print("UpdatedString:",str1)#生成"hello“与'Python'连接生成一个新字符串

#输出如下:UpdatedString:helloPython更新字符串可以通过将变量分配给另一个字符串来更新现有的字符串。新值可以是与其原值相关或完全不同的字符串。例如:转义字符

在Python中,可以用反斜杠表示转义或不可打印字符的列表。单引号以及双引号字符串的转义字符被解析。反斜线符号十六进制字符描述/说明\a0x07铃声或警报。\b0x08退格。\n0x0a新一行。\nnn

八进制符号,其中n在0~7范围内。\r0x0d回车返回。\s0x20空格。\t0x09制表符。\v0x0b垂直制表符。\x

字符x。\xnn

十六进制符号,其中n在0~9,a~f或A~F范围内。字符串特殊运算符运算符说明示例+连接,将运算符的两边的值连接。a+b:HelloPython。*重复,创建新字符串,连接相同字符串的指定副本个数。a*2

:

HelloHello。[]字符切片

-给出指定索引的字符,产生原字符串的子串。注意,字符串的索引从0开始。a[1]:e。[:]范围切片

–产生指定范围内的子字符串。a[1:4]

:

ell。in成员关系

-如果给定字符串中存在指定的字符串,则返回true。'll'ina:true。notin成员关系

-如果给定字符串中不存在指定的字符串,则返回true。'll'notina:false。r/R原始字符串

-抑制转义字符的实际含义。原始字符串的语法与正常字符串的格式完全相同,除了原始字符串运算符在引号之前加上字母“r”。“r”可以是小写(r)或大写(R),并且必须紧靠在第一个引号之前。print(r'\n')

将打印

\n

,或者

print(R'\n')

将打印

\n,要注意的是如果不加r或R作为前缀,打印的结果就是一个换行。字符串格式化运算符

Python中内置的%操作符可用于格式化字符串操作,控制字符串的输出格式。

当格式化字符串时需要一个字符串作为模板,模板中有格式符,这些格式符为真实输出时预留位置。Python可用一个tuple或字典将多个值传递给字符串模板,每个值对应一个格式符,也可以直接用一个变量名来传替一个参数。字符串格式化运算符

使用元组传替参数的格式:格式化字符串%(参数值1,参数值2,...)

说明:格式化字符串中“%”为占位符,后跟类型码,占位符的位置将用参数值替换。print("I'm%s.I'm%dyearold"%('Lili',19))

#该语句的输出为I'mLili.I'm19yearold

在格式化字符串操作中也可以用字典来传参数。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#该语句的输出为I'mLili.I'm19yearold字符串格式化运算符

使用元组传替参数的格式:格式化字符串%(参数值1,参数值2,...)

说明:格式化字符串中“%”为占位符,后跟类型码,占位符的位置将用参数值替换。print("I'm%s.I'm%dyearold"%('Lili',19))

#该语句的输出为I'mLili.I'm19yearold

在格式化字符串操作中也可以用字典来传参数。print("I'm%(name)s.I'm%(age)dyearold"%{'name':'Lili','age':19})#该语句的输出为I'mLili.I'm19yearold字符串格式化运算符编号格式化符号转换1%s在格式化之前通过str()函数转换字符串。2%i带符号的十进制整数。3%d带符号的十进制整数。4%u无符号十进制整数。5%o八进制整数。6%x,%X十六进制整数(“x”或“X”)。7%e,%E指数符号(’e‘或’E‘)。8%f浮点实数。9%g%f和%e。字符串的内置方法Python提供了很多的内置函数用于处理字符串。1.center函数

格式:center(width,fillchar)

作用:center函数返回一个指定的宽度width居中的字符串,

fillchar为填充的字符,默认为空格。

举例:字符串为str,填充字符为“&”------------------------------------------------------------------------->>>str="thisisstringexample....wow!!!";>>>print("str.center(40,'&'):",str.center(40,'&'))str.center(40,'&'):&&&&thisisstringexample....wow!!!&&&&-------------------------------------------------------------------------------字符串的内置方法2.count函数格式:count(str,beg=0,end=len(string))作用:统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。示例:-----------------------------------------------------------------------------str="thisisstringexample....wow!!!";

sub="i";

print("str.count(sub,4,40):",str.count(sub,4,40));

#输出如下:str.count(sub,4,40):2--------------------------------------------------------------------------字符串的内置方法3.endwith函数格式:endswith(suffix,beg=0,end=len(string))作用:确定字符串或字符串的子字符串(如果启动索引结束和结束索引结束)都以后缀结尾;如果是则返回true,否则返回false。----------------------------------------------------------------------------Str="Helloworld!!"

suffix='!!’

print(Str.endswith(suffix))#输出为true

print(len(Str))#输出为13

print(Str.endswith(suffix,1,12))#输出为false

print(Str.endswith(suffix,1,13))#输出为true----------------------------------------------------------------------------字符串的内置方法4.join方法格式:join(seq)作用:将序列(seq)中的元素以指定的字符连接生成一个新的字符串。-----------------------------------------------------------------------------str="-";seq=("a","b","c");#字符串序列printstr.join(seq);#输出结果a-b-c-----------------------------------------------------------------------------字符串的内置方法5.split方法格式:split(str,num)作用:用指定分隔符(str)对字符串进行切片生成列表,如果参数num有指定值,则分隔num+1个子字符串。------------------------------------------------------------------------------str="Line1-abcdef\nLine2-abc\nLine4-abcd";

print(str.split());#以空格为分隔符,包含\n

print(str.split('',1));#以空格为分隔符,分隔成两个#输出结果['Line1-abcdef','Line2-abc','Line4-abcd']['Line1-abcdef','\nLine2-abc\nLine4-abcd']-----------------------------------------------------------------------------字符串的内置方法6.ljust方法格式:ljust(width[,fillchar])作用:返回一个原字符串左对齐,并使用指定的填充字符填充至指定长度形成新的字符串。如果指定的长度小于原字符串的长度则返回原字符串。-------------------------------------------------------------------------------str="HelloPYTHON!!";

print(str.ljust(20,'*'));#输出为HelloPYTHON!!******-------------------------------------------------------------------------------字符串的内置方法7.translate方法格式:translate(table,deletechars=)作用:根据参数table给出的表(包含256个字符)转换字符串的字符,要过滤掉的字符放到

deletechars

参数中。-------------------------------------------------------------------------------intab="aeiou"outtab="12345"trantab=str.maketrans(intab,outtab)#制作翻译表str="thisisstringexample....wow!!!"print(str.translate(trantab))#输出结果th3s3sstr3ng2x1mpl2....w4w!!!-----------------------------------------------------------------------------字符串的内置方法其他内置方法请见书中相关内容主讲内容Speechcontent3.3.2修改与删除列表元素3.3列表1.1Python简介3.3.1列表的创建与列表值的访问3.3.3列表脚本操作符与列表截取3.3.5列表生成式3.3.4列表函数与方法列表

列表(list)是有序(有先后顺序之分)的可变(可修改)的元素集合,是Python中最基本的数据结构,也是最常用的Python数据类型。在列表中的数据项不需要具有相同的类型。列表中的每个元素都有索引值,第一个索引是0,第二个索引是1,依此类推,每个元素可以根据索引值来获得。

列表的创建与列表值的访问

如果要把列表(或元组)中的元素赋给变量,如list4=[1,2,3,4],可以通过如下命令把列表的值赋给a,b,c,d变量。>>>list4=[1,2,3,4]>>>a,b,c,d=list4>>>print(a,b,c,d)1234注意:该方法要求接收的变量个数要与列表元素一致,否则系统会报错。修改或删除列表元素

由于列表是有序的可变的元素集合,因此,列表中的元素是可以修改与删除的。修改列表中元素的值可以用“=”赋值号给列表元素重新赋值,如下所示:>>>list1=["大学语文","高等数学","英语","政治经济学","中国文化","艺术欣赏"]>>>list1[3]=“宏观经济学“#修改列表的第四个元>>>list1['大学语文','高等数学','英语','宏观经济学','中国文化','艺术欣赏']修改或删除列表元素

>>>list1=["大学语文","高等数学","英语","政治经济学","中国文化","艺术欣赏"]>>>dellist1[2]>>>list1['大学语文','高等数学','政治经济学','中国文化','艺术欣赏']#索引为2的元素被删除>>>dellist1#删除了list1对象>>>list1Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name'list1'isnotdefined>>>list1=["大学语文","高等数学","英语","政治经济学","中国文化","艺术欣赏"]>>>dellist1[0:3]>>>list1['政治经济学','中国文化','艺术欣赏']#删除了索引为0-2的元素,不包括3。在python中,可以使用del语句来删除列表或列表元素。修改或删除列表元素

>>>list1=["大学语文","高等数学","英语","政治经济学","中国文化","艺术欣赏"]>>>list1.remove("政治经济学")>>>list1['大学语文','高等数学','英语','中国文化','艺术欣赏']>>>list3=[["大学语文",87],["高等数学",84],["英语",90]]>>>list3.remove(["英语",90])>>>list3[['大学语文',87],['高等数学',84]]可以用remove()方法来删除指定的元素。列表脚本操作符与列表截取

表达式结果描述[1,2,3]+[4,5,6][1,2,3,4,5,6]组合成新列表['Hi!']*4['Hi!','Hi!','Hi!','Hi!']重复相应次数构成列表表达式结果描述List1[2]“英语”读取列表中第3个元素List[-2]“中国文化”读取列表中倒数第2个元素List1[3:]['政治经济学','中国文化','艺术欣赏']从第4个元素开始截取列表

List1[2:4]['英语','政治经济学']截取列从第3个元素到第4个元素list1=["大学语文","高等数学","英语","政治经济学","中国文化","艺术欣赏"]列表函数与方法

序号函数名作用1len(list)列表元素个数2max(list)返回列表元素最大值3min(list)返回列表元素最小值4list(seq)将元组转换为列表。元组内容见后。5enumerate(sequencd,[start=0])函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在

for循环当中。列表函数与方法

序号方法作用1list.append(obj)用于在列表末尾添加新的对象。2list.count(obj)统计某个元素在列表中出现的次数。3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。4list.index(obj)从列表中找出某个值第一个匹配项的索引位置。5list.insert(index,obj)将指定对象插入列表的指定位置6list.pop([index=-1])指定元素的索引值来移除列表中的某个元素(默认是最后一个元素),并且返回该元素的值,如果列表为空或者索引值超出范围会报一个异常。7list.reverse()反转列表中的元素。8list.sort([reverse=False])对原列表进行排序。reverse默认值是False,可以给它赋值成True,那就是反向排序。列表生成式

列表生成式(ListComprehensions)是Python内置的非常简单、实用的用来创建list的方法。假如要生成列表[0,1,2,3,4,5,6,7,8,9],可以用列表生成式来实现。假如要生成列表[0,1,4,9,16,25,36,49,64,81],也可以用列表生成式来生成。>>>[xforxinrange(0,10)][0,1,2,3,4,5,6,7,8,9]>>>[x*xforxinrange(0,10)][0,1,4,9,16,25,36,49,64,81]列表生成式>>>[xforxinrange(0,10)ifx%2==0]>>>[m+nformin"ABC"fornin"123"]>>>L=['Hello','World','IBM','Apple’]>>>[s.lower()forsinL]请説出下列列表生成式表示的列表主讲内容Speechcontent3.4.2元组与列表的应用3.4元组1.1Python简介3.4.1元组的创建与基本操作元组Python中元组(tuple)数据类型与列表类似,不同之处在于元组中的元素是不能修改。元组的创建与基本操作

元组创建很简单,只需要在“()”圆括号中添加元素,并使用逗号分隔即可。如果元组只有一个元素,通常在元素后加逗号。tup1=('physics','chemistry',1997,2000)tup2=(1,2,3,4,5)tup3="a","b","c","d"tup1=();#创建空元组tup1=(50,)#规范写法元组与列表的应用1.请用列表与元组实现生成一副扑克牌程序(不包括大小王)实现思路如下:为了存储52张牌(不包括大小王),可以先定义一个临时空列表,然后把2-10的数字添加到该列表中,再用列表的extend方法把J、Q、K、A也添加到此列表中。利用循环获取扑克牌类型["黑桃","红桃","方块","草花"]中的元素,并和临时列表中的元素进行结合,把结合产生的结果添加到一个新的空列表card中。Card中的每一张牌用一个元组表示。例如:[(‘红心’,2),(‘草花’,2),…(‘黑桃A’)]。元组与列表的应用2.需求:请用列表与元组实现购物车实现思路如下:

首先要向客户展示一个商品列表,列表包括商品编号、商品名称与单价。客户从商品列表中选择商品放到购物车,客户在选择商品时,系统必须知道客户账户的资金额,是否有购买选择商品的足额资金。为了实现这项功能,客户在选择商品前系统需提示用户输入账户资金数是量,然后再展示商品列表给客户选择,客户根据商品编号选择商品。在选择商品过程中要系统要完成商品价格与客账户余额比较。如果余额不足就不能选择相应的商品,余额够,就允许客户选择购买,且把把客户选择的商品放入购物车。主讲内容Speechcontent3.5.2访问字典中的值与字典的修改3.5字典1.1Python简介3.5.1字典的定义方法3.5.3字典函数与方法3.5.4字典应用举例字典

字典(Dictionary)是一种无序可变容器模型,可存储任意类型对象。为什么还要用字典呢?

在列表中如果存放一个人的信息,如,姓名,性别,年龄等多个值,可以定义info=['egon','male',18]列表。但定义列表的目的不仅仅是为了存储数据,还需要考虑如何取到列表中的值,如果想取出年龄,可以用info[2]。但这是基于已经知道该列表的第3个位置存放的是年龄的前提下,才知道索引2对应的是年龄,而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是Python需要寻找一种即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,如key=value,这就导致了字典的出现。字典的定义方法

字典的创建方法是定义字典中的键值对,字典的每个键值

key=>value

对用冒号“

:

”分割,每组键值对之间用逗号分割,整个字典包括在花括号

“{}”

中即可。例如:stuDict={‘stuName’:‘Zara‘,‘stuGender’:’男’,‘stuAge’:21,‘stuClass':‘201804'}字典的定义方法

注意:字典中的键具有唯一性,如果重复定义,后面的键值会取代前键的值。

例如:dict={'a':1,'b':2,'b':'3’}#键b进行了重复定义,该字典相当于dict={'a':1,'b':3}字典的定义方法

在字典中,值可以是任一数据类型,但键必须是不可变的,如数字、字符串、或元组。

例如:info={'name':'egon’,

'hobbies':['play','sleep’],

'company_info':{

'name':'sun','type':'IT',

'emp_num':10000,

}}

该字典中的值有字符串,字典与列表。访问字典中的值与修改字典

获得字典中键值的方式有两种:

第一种方法是“字典名[键]”,注意键必须是字符串类型。

如:a={'name':'tony’,'sex':'male’}a[‘name’]是获取name的值。

访问字典中的值与修改字典

第二种方法是使用字典的get方法。a.get(‘name‘)是获取name值。

如果字典已知,可以任选一个,而当不确定字典中是否存在某个键时,如果用第一个方法必须先判断,再取值。if'name'ina.keys():printa['name‘]

因为不先判断的话,直接使用a[‘name’]会导致报错keyerror,提示没有该key的值。

而用a.get(‘name’)则不会产生错误。如果存在该键Python的解释器就返回相应的value,如果不存在就返回None。访问字典中的值与修改字典

修改字典包括向字典添加新的键/值对,修改或删除已有键/值对。如果a={'name’:'tony’,'sex':'male’},a[‘name’]=’Jack’#修改name的值。

访问字典中的值与修改字典a={'name':'tony’,'sex':'male’}dela['Name’]#删除a字典中的'Name'key-value对。a.clear()#清空词典所有健值对;dela#删除字典删除操作可删除整个字典、清空字典或删除字典中单一的元素。字典函数与方法序号函数描述1len(dict)计算字典元素个数,即键的总数。2str(dict)输出字典可打印的字符串表示。3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。字典函数与方法序号函数描述1dict.clear()删除字典内所有元素2返回一个字典的浅复制3dict.fromkeys(seq[,val])

创建一个新字典,以序列

seq中元素做字典的键,val为字典所有键对应的初始值4dict.has_key(key)如果键在字典dict里返回true,否则返回false5dict.items()以列表返回可遍历的(键,值)元组数组6dict.keys()以列表返回一个字典所有的键7dict.setdefault(key,default=None)和get()类似,但如果键不存在于字典中,将会添加键并将值设为default8dict.update(dict2)把字典dict2的键/值对更新到dict里9dict.values()以列表返回字典中的所有值10pop(key[,default])删除字典给定键

key所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。11popitem()随机返回并删除字典中的一对键和值。12dict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值字典的应用编程简单模拟银行ATM机的功能主讲内容Speechcontent3.6.2该问集的方法3.6集合1.1Python简介3.6.1创建可变集合3.6.3集合运算集合

Python3中的集合是一个无序不重复元素集,集合中元素必须是不可变类型。与列表和元组不同,集合是无序的,无法按索引访问集合元素也能不用切片获取元素。在Python中,集合分为可变集合(Set)与不可变集合(frozenset)两种。

可变集合是指集合中的元素可以动态的增加或删除。不可变集合是指集合中的元素不可改变。不可变集合用得很少,在此仅介绍可变集合set。创建可变集合可变集合可以使用大括号{}或者set()函数创建。s1=set('HelloChina!')#使用字符串创建可变集合s1s2={'11','22','33'}print(s1,s2)#输出如下{'o','!','a','h','','e','n','C','l','i','H'}{'22','33','11'}print(type(s1),type(s2))<class'set'><class'set’>注意:创建一个空集合必须用set(),不能用{},因为{}是用来创建一个空字典的。创建可变集合list1=[1,2,"a"]#列表类型

tuple1=(1,2,"b")#元组类型

dict1={1:"a",2:"b"}#字典类型

#用列表,元组,字典创建可变集合

S_list=set(list1)

S_tuple=set(tuple1)

S_dict=set(dict1)

print(S_list,S_tuple,S_dict)#输出为:{1,2,'a'}{1,2,'b'}{1,2}

注意:用字典创建集合时,集合中只有健,没有键值,另外在用元组与列表创建集合时,元组与列表中的元素必须是不可变的,否则会报错。用列表,元组,字典创建可变集合访问集合的方法1.增加元素操作在python中,可用add与update方法向集合中增加元素。s1=set('python')

s1.add('why')

print(s1)

s2=set('python')

s2.update('why')

print(s2)#输出如下:{'o','y','n','why','p','t','h'}{'o','y','n','w','p','t','h'}访问集合的方法

2.删除操作

在python中,可用remove、discard与pop函数删除集合中的元素,用clear

方法用于移除集合中的所有元素。s1=set('abcdefghijk')

s1.remove('a')

print(s1)

s1.remove('w')#输出如下:{'i','j','k','c','e','b','g','h','f','d'}File"D:/test/service1.py",line4,in<module>s1.remove('w')KeyError:'w'访问集合的方法

2.删除操作

在python中,可用remove、discard与pop函数删除集合中的元素,用clear

方法用于移除集合中的所有元素。

如果元素不存在,用discard方法时,系统不会报错。

pop方法也是删除集合中的一个元素,如果集合是字典或字符转换的集合,则随机删除一个元素,如果集合是由列表和元组转换的集合,pop方法是从左边删除元素,主要原因是集合对list和tuple具有排序(升序)作用。clear方法用于移除集合中的所有元素。集合运算

Python集合运算有运算交集、并集、差集、对称差集、是子集与是父集判断等,这些运算可通过运算符与相应的函数来实现。集合运算

1.取两个集合的交集两个集合A和B的交集是含有所有既属于A又属于B的元素。取两个集合的交集可使用交集运算符“&”或intersection方法来实现。s1=set(['a','b','c','d','e','f'])

s2=set(('d','e','f','g','h','i'))

print('交集:',ersection(s2))

print('交集:',s1&s2)#输出如下:交集:{'e','d','f'}交集:{'e','d','f'}集合运算2.取两个集合的并集两个集合的并集由两个集合所有元素构成的集合,而不包含其他元素。取两个集合的并集可使用交集运算符“|”或union方法来实现。s1=set(['a','b','c','d','e','f'])

s2=set(('d','e','f','g','h','i'))

print('并集:',s1.union(s2))

print('并集:',s1|s2)#输出如下:并集:{'g','c','i','e','d','b','f','a','h'}并集:{'g','c','i','e','d','b','f','a','h'}集合运算3.取两个集合的差集

A与B的差集是所有属于A且不属于B的元素构成的集合。取两个集合的并集可使用交集运算符“-”或difference方法来实现。s1=set(['a','b','c','d','e','f'])

s2=set(('d','e','f','g','h','i'))

print('差集:',s1.difference(s2))

print('差集:',s1-s2)#输出如下:差集:{'c','a','b'}差集:{'c','a','b'}集合运算4.取两个集合的对称差集对称差集是把两个集合中相同的元素去掉,然后再把两个集合中剩下的元素组成一个新的集合。取两个集合的对称差集可使用对称差集运算符“^”或symmetric_difference方法来实现。s1=set(['a','b','c','d','e','f'])

s2=set(('d','e','f','g','h','i'))

print('对称差集:',s1.symmetric_difference(s2))

print('对称差集:',s1^s2)#输出如下:对称差集:{'h','b','a','i','g','c'}对称差集:{'h','b','a','i','g','c'}集合运算5.判断是否是父集和子集的关系判断一个集合是否是另一集合的父集运算符“>=”或issuperset()方法来实现,判断一个集合是否是另一集合的子集运算符“<=&”或issubset方法来实现,如果是返回true,如果不是返回为false。s1=set(['a','b','c'])

s2=set(('a','b','c','d','h','i'))

print("issubset:",s1.issubset(s2))#判断s1是不是s2的子集

print("issubset:",s1<=s2)

print("issuperset:",s2.issuperset(s1))#判断s2是不是s1的父集

print("issuperset:",s2>=s1)#输出如下:issubset:Trueissubset:Trueissuperset:Trueissuperset:True主讲内容Speechcontent3.7.2浅拷贝3.7深栈拷贝1.1Python简介3.7.1深拷贝3.7.3深浅拷贝应用示例拷贝

拷贝就是对象的复制,在python拷贝有深浅之分。赋值(=赋值)问题List2=list1是在内存定义list2变量,由于该变量与list1变量指向同一个列表对象id(list1)==id(list2)的值为True。如果是指向的对象可变类型,比如列表,修改其中一个,另一个必定改变,也就是説,两个对象数据完全共享。如果是不可变类型,比如字符串、元组,修改了其中一个,另一个并不会变。在python中对象除了赋值,还可以进行拷贝。拷贝有深、浅拷贝之分。拷贝list1=[1,2,3,['a','b']]

list2=list1

print(id(list1)==id(list2))#True

list2[0]='a1'

list2[3][0]='b1'

print(list1,list2)#输出['a1',2,3,['b1','b']]['a1',2,3,['b1','b']]深拷贝深拷贝

温馨提示

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

评论

0/150

提交评论