资源简介 (共36张PPT)5、元组字典集合3.2 Python语言程序设计元组Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 ( ),列表使用方括号 [ ]。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。元组实例>>> tup1 = ('Google', 'Runoob', 1997, 2000)>>> tup2 = (1, 2, 3, 4, 5 )>>> tup3 = "a", "b", "c", "d" # 不需要括号也可以>>> type(tup3)创建空元组tup1 = ()元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用:实例>>> tup1 = (50)>>> type(tup1) # 不加逗号,类型为整型>>> tup1 = (50,)>>> type(tup1) # 加上逗号,类型为元组元组元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。访问元组元组可以使用下标索引来访问元组中的值,如下实例:实例tup1 = ('Google', 'Runoob', 1997, 2000)tup2 = (1, 2, 3, 4, 5, 6, 7 )print ("tup1[0]: ", tup1[0])print ("tup2[1:5]: ", tup2[1:5])以上实例输出结果:tup1[0]: Googletup2[1:5]: (2, 3, 4, 5)修改元组元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:实例tup1 = (12, 34.56)tup2 = ('abc', 'xyz')# 以下修改元组元素操作是非法的。# tup1[0] = 100# 创建一个新的元组tup3 = tup1 + tup2print (tup3)以上实例输出结果:(12, 34.56, 'abc', 'xyz')删除元组元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:实例tup = ('Google', 'Runoob', 1997, 2000)print (tup)del tupprint ("删除后的元组 tup : ")print (tup)以上实例元组被删除后,输出变量会有异常信息,输出如下所示:删除后的元组 tup :Traceback (most recent call last):File "test.py", line 8, in print (tup)NameError: name 'tup' is not defined元组运算符与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。Python 表达式 结果 描述len((1, 2, 3)) 3 计算元素个数(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制3 in (1, 2, 3) True 元素是否存在for x in (1, 2, 3): print (x,) 1 2 3 迭代元组索引,截取因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:元组:tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')元组索引,截取Python 表达式 结果 描述tup[1] 'Runoob' 读取第二个元素tup[-2] 'Weibo' 反向读取,读取倒数第二个元素tup[1:] ('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin') 截取元素,从第二个开始后的所有元素。tup[1:4] ('Runoob', 'Taobao', 'Wiki') 截取元素,从第二个开始到第四个元素(索引为 3)。tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')元组内置函数序号 方法及描述 实例1 len(tuple)计算元组元素个数。 >>> tuple1 = ('Google', 'Runoob', 'Taobao')>>> len(tuple1)3>>>2 max(tuple)返回元组中元素最大值。 >>> tuple2 = ('5', '4', '8')>>> max(tuple2)'8'>>>3 min(tuple)返回元组中元素最小值。 >>> tuple2 = ('5', '4', '8')>>> min(tuple2)'4'>>>4 tuple(iterable)将可迭代系列转换为元组。 >>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']>>> tuple1=tuple(list1)>>> tuple1('Google', 'Taobao', 'Runoob', 'Baidu')关于元组是不可变的所谓元组的不可变指的是元组所指向的内存中的内容不可变。>>> tup = ('r', 'u', 'n', 'o', 'o', 'b')>>> tup[0] = 'g' # 不支持修改元素Traceback (most recent call last):File "", line 1, in TypeError: 'tuple' object does not support item assignment>>> id(tup) # 查看内存地址4440687904>>> tup = (1,2,3)>>> id(tup)4441088800 # 内存地址不一样了从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:d = {key1 : value1, key2 : value2, key3 : value3 }也可如此创建字典:dict1 = { 'abc': 456 }dict2 = { 'abc': 123, 98.6: 37 }字典键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。一个简单的字典实例:dict = {'name': 'runoob', 'likes': 123, 'url': 'www.'}访问字典里的值把相应的键放入到方括号中,如下实例:实例dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print ("dict['Name']: ", dict['Name'])print ("dict['Age']: ", dict['Age'])以上实例输出结果:dict['Name']: Runoobdict['Age']: 7访问字典里的值如果用字典里没有的键访问数据,会输出错误如下:实例dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print ("dict['Alice']: ", dict['Alice'])以上实例输出结果:Traceback (most recent call last):File "test.py", line 5, in print ("dict['Alice']: ", dict['Alice'])KeyError: 'Alice'修改字典向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:实例dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}dict['Age'] = 8 # 更新 Agedict[‘School’] = “Python3.8" # 添加信息print ("dict['Age']: ", dict['Age'])print ("dict['School']: ", dict['School'])以上实例输出结果:dict['Age']: 8dict['School']: Python3.8删除字典元素能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例:实例dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}del dict['Name'] # 删除键 'Name'dict.clear() # 清空字典del dict # 删除字典print ("dict['Age']: ", dict['Age'])print ("dict['School']: ", dict['School'])但这会引发一个异常,因为用执行 del 操作后字典不再存在:Traceback (most recent call last):File "test.py", line 9, in print ("dict['Age']: ", dict['Age'])TypeError: 'type' object is not subscriptable字典键的特性字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:实例dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜'}print ("dict['Name']: ", dict['Name'])以上实例输出结果:dict['Name']: 小菜字典键的特性2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:实例dict = {['Name']: 'Runoob', 'Age': 7}print ("dict['Name']: ", dict['Name'])以上实例输出结果:Traceback (most recent call last):File "test.py", line 3, in dict = {['Name']: 'Runoob', 'Age': 7}TypeError: unhashable type: 'list'字典内置函数序号 函数及描述 实例1 len(dict)计算字典元素个数,即键的总数。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}>>> len(dict) 32 str(dict)输出字典,可以打印的字符串表示。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}>>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"3 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}>>> type(dict) 字典内置方法序号 函数及描述1 radiansdict.clear() 删除字典内所有元素2 radiansdict.copy() 返回一个字典的浅复制3 radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值4 radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值5 key in dict 如果键在字典dict里返回true,否则返回false6 radiansdict.items() 以列表返回一个视图对象7 radiansdict.keys() 返回一个视图对象8 radiansdict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default9 radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里10 radiansdict.values() 返回一个视图对象11 pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。12 popitem() 随机返回并删除字典中的最后一对键和值。集合集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。创建格式:parame = {value01,value02,...}或者set(value)集合>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}>>> print(basket) # 这里演示的是去重功能{'orange', 'banana', 'pear', 'apple'}>>> 'orange' in basket # 快速判断元素是否在集合内True>>> 'crabgrass' in basketFalse>>> # 下面展示两个集合间的运算....>>> a = set('abracadabra')>>> b = set('alacazam')>>> a{'a', 'r', 'b', 'c', 'd'}>>> a - b # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}>>> a | b # 集合a或b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}>>> a & b # 集合a和b中都包含了的元素{'a', 'c'}>>> a ^ b # 不同时包含于a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}集合类似列表推导式,同样集合支持集合推导式(Set comprehension):实例:>>> a = {x for x in 'abracadabra' if x not in 'abc'}>>> a{'r', 'd'}集合的基本操作1、添加元素语法格式如下:s.add( x )将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> thisset.add("Facebook")>>> print(thisset){'Taobao', 'Facebook', 'Google', 'Runoob'}集合的基本操作还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:s.update( x )x 可以有多个,用逗号分开。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> thisset.update({1,3})>>> print(thisset){1, 3, 'Google', 'Taobao', 'Runoob'}>>> thisset.update([1,4],[5,6])>>> print(thisset){1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}>>>集合的基本操作2、移除元素语法格式如下:s.remove( x )将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> thisset.remove("Taobao")>>> print(thisset){'Google', 'Runoob'}>>> thisset.remove("Facebook") # 不存在会发生错误Traceback (most recent call last):File "", line 1, in KeyError: 'Facebook'>>>集合的基本操作此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:s.discard( x )实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> thisset.discard("Facebook") # 不存在不会发生错误>>> print(thisset){'Taobao', 'Google', 'Runoob'}集合的基本操作我们也可以设置随机删除集合中的一个元素,语法格式如下:s.pop()脚本模式实例:thisset = set(("Google", "Runoob", "Taobao", "Facebook"))x = thisset.pop()print(x)输出结果:$ python3 test.pyRunoob多次执行测试结果都不一样。set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。集合的基本操作3、计算集合元素个数语法格式如下:len(s)计算集合 s 元素个数。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> len(thisset)3集合的基本操作4、清空集合语法格式如下:s.clear()清空集合 s。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> thisset.clear()>>> print(thisset)set()集合的基本操作5、判断元素是否在集合中存在语法格式如下:x in s判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。实例:>>> thisset = set(("Google", "Runoob", "Taobao"))>>> "Runoob" in thissetTrue>>> "Facebook" in thissetFalse>>>集合内置方法方法 描述add() 为集合添加元素clear() 移除集合中的所有元素copy() 拷贝一个集合difference() 返回多个集合的差集difference_update() 移除集合中的元素,该元素在指定的集合也存在。discard() 删除集合中指定的元素intersection() 返回集合的交集pop() 随机移除元素remove() 移除指定元素union() 返回两个集合的并集update() 给集合添加元素 展开更多...... 收起↑ 资源预览