赞
踩
- 列表是Pyhton中的一个对象
- 对象(object)就是内存中专门用来存储数据的一块区域
- 之前我们学习的对象,像数值,他只能保存一个单一的数据
- 列表中可以保存多个有序的数据
- 列表是用来存储对象的对象
- 列表的使用:
1.列表的创建
2、操作列表中的数据
- 练习:
- 创建一个列表,在列表中保存五部电影名称,
然后分别通过索引来获取每个电影的名字
# 创建列表,通过[]来创建列表 my_list = [] # 创建了一个空列表 # print(my_list,type(my_list)) # [] <class 'list'> # 列表存储的数据,我们称为元素 # 一个列表中可以存储多个元素,也可以在创建列表时候,来指定列表中的元素 my_list = [10] #创建一个只包含一个元素的列表 # 当向列表中添加多个元素时,多个元素之间使用,逗号隔开 my_list = [12,12,14,12,15,16,17] # 创建了一个保存有5个元素的列表 # 列表中可以保存任意的对象 my_list = [10,'hello',True,None,[1,2,3],print] # [10, 'hello', True, None, [1, 2, 3], <built-in function print>] <class 'list'> # 列表中的对象都会按照插入的顺序存储到列表中, # 第一个插入的对象保存到第一个位置,第二个位置保存到第二个位置 # 我们可以通过索引(index)来获取列表中的元素 # 索引是元素在列表中的位置,列表中的每一个元素都有一个索引 # 索引是从0开始的整数,列表第一个位置索引为0,第二个位置索引为1,第三个位置索引为2,以此类推 my_list = [1,2,4,5,3,5,8] # 通过索引获取列表中的元素 # 语法:my_list[索引] my_list[0] print(my_list[4]) # 如果使用的索引超过了最大的范围,会抛出异常 # print(my_list[10]) # IndexError: list index out of range # 获取列表的长度,列表中元素的个数 # len()函数,通过该函数可以获取列表的长度 # 获取到的长度的值,是列表的最大索引+1 print(len(my_list)) # 7 print(my_list,type(my_list))
# 切片 # 切片指从现有的列表中,获取一个子列表 # 创建一个列表,一般创建列表时候,变量的名字会使用复数 stus = ['猪八戒','孙悟空','沙和尚','唐僧','白龙马','白骨精'] # 列表的索引可以是负数 # 如果索引是负数,则从后向前获取元素,-1表示倒数第1一个,-2表示倒数第二个,以此类推 print(stus[-2]) #通过切片来获取指定的元素 # 语法:列表[开始:结束] # 通过切片获取元素时候,会包括起始位置的元素,不会包括结束位置的元素 # 做切片操作时候,总会返回一个新的列表,不会影响原来的列表 # 起始和结束位置的索引都可以省略不写, # 如果省略结束位置,则会一直截取到最后 # 如果省略起始位置,则会从第一个元素开始截取 # 如果起始和结束位置全部省略,则相当于创建了一个列表的副本 print(stus[1:]) print(stus[:3]) print(stus[:]) print(stus) # 语法:列表[起始:结束:步长] # 步长表示,每次获取元素的间隔,默认值是1 print(stus[1:5:3]) # 步长不能是0但是可以是负数 # print(stus[::0]) #ValueError: slice step cannot be zero print(stus[::-1]) # 如果是负数,则会从列表的后部向前边获取元素
# + 和 * # + 可以将两个列表拼接为一个列表 my_list = [1,14,52,3] + ['hello',213] # * 可以将列表重复指定的次数 my_list = [12,13,14] * 5 # print(my_list) # 创建一个列表 stus = ['猪八戒','孙悟空','猪八戒','孙悟空','沙和尚','唐僧','白龙马','白骨精'] # in 和 not in # in 用来检查指定元素是否存在于列表中 # 如果存在,返回True,否则返回False # not in用来检测指定元素是否不在列表中 # 如果不在,则返回True,否则返回False print('白龙马' in stus) print('牛魔王' not in stus) # len()获取列表中的元素个数 # min()获取列表中的最小值 # max()获取列表中的最大值 print(min(stus),max(stus)) # 两个方法(method),方法和函数基本上是一样的,只不过方法必须通过 对象.方法() 的形式调用 # xxx.print() 方法实际行就是和对象关系紧密的函数 # stus.index() 获取指定元素在列表中的第一次出现的索引 print(stus.index('沙和尚')) # index()的第二个参数,表示查找的起始位值,第三个参数,表示查找的结束位置 # print(stus.index('沙和尚',3,7)) # 如果获取列表中没有的元素,会抛出异常 # ValueError: '沙和尚' is not in list # stus.count() 统计指定元素在列表中出现的次数 print(stus.count('牛魔王')) # 0
# 创建一个列表 stus = ['猪八戒','孙悟空','猪八戒','孙悟空','沙和尚','唐僧','白龙马','白骨精'] print(stus) stus[0] = 'zhubajie' stus[2] = '哈哈哈' # 通过del来删除元素 del stus[2] # 删除索引为2的元素 stus[0:2] = 'swkpwqe' # 字符串不可变序列['s', 'w', 'k', '孙悟空', '沙和尚', '唐僧', '白龙马', '白骨精'] # 使用新的元素替换旧元素 stus[0:2] = ['牛魔王','红孩儿','二郎神'] # print(stus[0:2]) # 向索引为0的位置插入元素 stus[0:0] = ['太乙真人'] # stus = [1,2,3,4,345,123,123,123,123,12] # 步长是根据元素个数中的多少个步长段来算的 # stus[::2] = ['芭蕉扇','深海龙王'] print(stus) # 通过切片来删除元素 del stus[0:2] print(stus) del stus[::2] print(stus) # ['太乙真人', '牛魔王', '红孩儿', '二郎神', 'k', 'p', 'w', 'q', 'e', '孙悟空', '沙和尚', '唐僧', '白龙马', '白骨精'] # ['红孩儿', '二郎神', 'k', 'p', 'w', 'q', 'e', '孙悟空', '沙和尚', '唐僧', '白龙马', '白骨精'] # ['二郎神', 'p', 'q', '孙悟空', '唐僧', '白骨精'] stus[1:3] = [] print(stus) # ['二郎神', 'p', 'q', '孙悟空', '唐僧', '白骨精'] # ['二郎神', '孙悟空', '唐僧', '白骨精'] # 以上操作,是适用于可变序列 # 不可变序列 【字符串、元组】 s = 'hello' # s[1] = 'a' #TypeError: 'str' object does not support item assignment # 如果想要对字符串做修改,可以通过list()函数将其他的序列转换为list s = list(s) s[1] = 'a' print(s) # ['h', 'a', 'l', 'l', 'o']
# 列表的方法 stus = ['猪八戒','孙悟空','猪八戒','孙悟空','沙和尚','唐僧','白龙马','白骨精'] print(stus) print(len(stus)) # append() # 向列表的最后添加一个元素 # stus.append('哪吒三太子') # insert() # 向列表的指定位置插入一个元素 # 参数: # 1.要插入的位置 # 2.要插入的元素 # stus.insert(2,'古娜拉黑暗之神') # extend() # 使用新的序列来扩展当前的序列 # 需要一个序列作为参数,他会将该列表中的元素添加到当前列表中 # stus.extend(['葫芦娃','爷爷']) # stus += ['1','3',3] # clear() # 清空序列 # stus.clear() # pop() # 根据索引删除并返回被删除的元素的元素 # result = stus.pop(2) # 删除索引为2的元素 # result = stus.pop() # 不传参数,默认删除最后一个元素 # print(result) #猪八戒 # remove() # 删除指定值的元素,如果相同值的元素有多个,只会删除第一个 stus.remove('孙悟空') # reverse() # 用来反转列表 stus.reverse() # sort() # 用来对列表中的元素进行排序,默认是升序排列 # 如果需要降序排列,则需要传递一个reverse=True作为参数 stus.sort() print(len(stus),stus) my_list = list('asdjfnbvcuytwrsxcv') print(len(my_list),my_list) my_list.sort() my_list.sort(reverse=True) print(len(my_list),my_list)
# 遍历列表,指的是将列表中的所有元素取出来 # 创建列表 stus = ['猪八戒','孙悟空','猪八戒','孙悟空','沙和尚','唐僧','白龙马','白骨精'] # 遍历列表 # 创建一个循环 # 通过while循环来遍历列表 # i = 0 # while i < len(stus): # print(stus[i]) # i += 1 # 通过for循环来遍历列表 # 语法: # for 遍历 in 序列: # 代码块 # for循环的代码块会执行多次,序列中有几个元素就会执行几次 # 每执行一次就会将序列中的一个元素赋值给变量, # 所以我们可以通过变量,来获取列表中的元素 for s in stus: print(s)
- 序列是Python中最基本的一种数据结构
- 数据结构指计算机中数据存储的方式
- 序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)
并且序列中的数据会按照添加的顺序来分配索引
- 序列的分类:
可变序列(序列中的元素可以改变):
> 列表(list)
不可变序列(序列中的元素不能改变):
> 字符串(str)
> 元组(tuple)
- 刚刚我们所讲的所有操作都是序列的通用操作01 02 03三个文件中的操作
# 元组 tuple # 元组是一个不可变的序列 # 他的操作方式基本上和列表是一致的 # 所以你在操作元组时,就把元组当成一个不可变的列表就ok了 # 一般当我们希望数据不改变时,就是用元组,其余情况都是用列表 # 创建元组 # 使用()小括号来创建元组 my_tuple = () #创建了一个空元组 print(my_tuple,type(my_tuple)) #() <class 'tuple'> my_tuple = (1,2,3,4,5) #创建了一个5个元素的元组 # 元组是不可变对象,不能尝试为元组中的元素重新赋值 # my_tuple[3] = 10 #TypeError: 'tuple' object does not support item assignment print(my_tuple[3]) # 当元组不是空元组时,括号可以省略 # 如果元组不是空元组,它里边至少要有一个, my_tuple = 10,20,30,40 # my_tuple = 40, # (40,) <class 'tuple'> print(my_tuple,type(my_tuple)) # 元组的解包(解构) # 解包指的是将元组中每一个元素都赋值给一个变量 a,b,c,d = my_tuple print('a = ',a,'\nb = ',b,'\nc = ',c,'\nd = ',d) a = 100 b = 300 print(a,b) # 交互a和b的值,这时候我们就可以用元组解包 a,b = b,a print(a,b) my_tuple = 1,2,3,4,5 # a,b,c = my_tuple#ValueError: too many values to unpack (expected 3) # 在对一个元组进行解包时候,变量的数量必须和元组中的元素的数量一致 # 也可以在变量前边添加一个*,这样变量将会获取元组中所有剩余的元素 a,b,*c = my_tuple # a = 1 # b = 2 # c = [3, 4, 5] a,*b,c = my_tuple # a = 1 # b = [2, 3, 4] # c = 5 *a,b,c = my_tuple # a = [1, 2, 3] # b = 4 # c = 5 a,b,*c = ['my_tuple',1,2,3] # a = my_tuple # b = 1 # c = [2, 3] a,b,*c = 'my_tuple' # a = m # b = y # c = ['_', 't', 'u', 'p', 'l', 'e'] # 不能同时出现两个或两个以上的*变量 # *a,*b,c = my_tuple #SyntaxError: two starred expressions in assignment print('a = ',a,'\nb = ',b,'\nc = ',c)
- 做命令行版本的员工管理系统
- 功能:
四个:
1.查询
- 显示当前系统当中的所有员工
2.添加
- 将员工添加到当前系统中
3.删除
- 将员工从系统当中删除
4.退出
- 退出系统
- 员工信息要保存到哪里?列表,在系统中应该有一个列表,专门用来保存所有员工信息的。
# 显示系统欢迎信息 print('-'*20,'欢迎使用员工管理系统','-'*20) # 显示用户选项 emps = ['孙悟空\t18\t\t男\t\t花果山','猪八戒\t18\t\t男\t\t高老庄','沙和尚\t18\t\t男\t\t沙河','唐僧\t20\t\t男\t\t寺庙'] # 创建一个死循环 while True: # 显示用户的选项 print('请选择要做的操作:\n\t1.查询员工信息\n\t2.添加员工信息\n\t3.删除员工信息\n\t4退出系统') user_choose = input('请选择您的操作[1-4]:') print('-'*62) # 根据用户的选择来做相关的操作 if user_choose == '1': # 查询员工 # 打印表头 print('序号\t\t姓名\t\t年龄\t\t性别\t\t住址') # 创建一个变量,来表示员工的序号 n = 1 # 显示员工信息 for emp in emps: print(f'{n}\t\t',emp) n += 1 elif user_choose == '2': # 添加员工 add_employee_name = input('请输入要添加员工的姓名') add_employee_age = input('请输入要添加员工的年龄') add_employee_sex = input('请输入要添加员工的性别') add_employee_address = input('请输入要添加员工的住址') emp = f'\t\t{add_employee_name}\t\t{add_employee_age}\t\t{add_employee_sex}\t\t{add_employee_address}' print('以下员工将被添加到系统中:') print('-' * 62) print('序号\t\t姓名\t\t年龄\t\t性别\t\t住址') print(emp) print('-' * 62) user_confirm = input('是否确认添加[Y/n]:') # 判断 if user_confirm == 'Y': # 删除元素 add_emp = emps.append(emp) n = 1 for emp in emps: print(f'{n}\t\t',emp) n += 1 # 显示提示 print('新员工添加成功') else: print('操作已取消') # print("添加成功") elif user_choose == '3': # 删除员工,根据员工的序号来删除员工 # 获取要删除员工的序号 del_num = int(input('请输入要删除员工的序号:')) # 判断序号是否有效 if 0 < del_num <= len(emps): # 输入合法,根据序号来获取索引 del_i = del_num - 1 # 显示一个提示信息 print('以下员工将被删除:') print('-'*62) print('序号\t\t姓名\t\t年龄\t\t性别\t\t住址') print(f'{del_num}\t\t{emps[del_i]}') print('-' * 62) user_confirm = input('该操作不可恢复,是否确认删除[Y/n]:') # 判断 if user_confirm == 'Y': # 删除元素 del_emp = emps.pop(del_i) # 显示提示 print(f'{del_emp}员工已被删除') else: print('操作已取消') else: # 输入不合法 print('您输入的序号不合法,请重新输入!') # del_employee = input('请输入要删除员工的姓名:') # for emp in emps: # # print(emp) # # s = list(emp) # # employee = s[0] # # print(s) # # if del_employee == employee: # if del_employee in emp: # emps.remove(emp) # print(f'删除{del_employee}成功') elif user_choose == '4': # 退出程序 qiut_system = input('是否确定退出程序?[Y/n]') if qiut_system == 'Y': print('程序已退出!') break else: print('输入有误!请重选选择!') # 打印分割线 print('-'*62)
# range()是一个函数,可以用来生成一个自然数的序列 r = range(5) #生成一个这样的序列[0, 1, 2, 3, 4] r = range(0,10,2)#生成一个0-10,步长为2的序列 [0, 2, 4, 6, 8] r = range(1,10,-1)#[]啥也不是 r = range(10,1,-1)# [10, 9, 8, 7, 6, 5, 4, 3, 2] # 该函数需要三个参数 # 1.起始位值(可以省略,默认是0) # 2.结束位置 # 3.步长(可以省略,默认是1) print(list(r)) # 通过range()可以创建一个执行指定次数的for循环 # for()循环处理创建方式以外,其余的都和while一样 # 包括else、包括break continue都可以在for循环中使用 # 并且for循环使用也更加简单 # 将之前使用的while循环做的练习,在使用for循环完成一次! for i in range(20): print(i) for s in 'hello': print(s)
- 每个对象中都保存了三个数据: id(标识) type(类型) value(值) - 列表就是一个可变对象 a = [1,2,3,5,] - a[0] = 10(改变对象) - 这个操作是在通过变量去修改对象的值 - 这个做操不会改变变量所指向的对象 - 当我们去修改对象时,如果有其他变量也指向了该对象,则修改也会在其他的变量中体现 - a = [3,3,3](改变变量) - 这个操作是在给变量重新赋值 - 这种操作会改变变量所指向的对象 - 为一个变量重新赋值时,不会影响其他的变量 - 一般只有在变量赋值时才是修改变量,其他的都是修改对象
# 可变对象 a = [1,2,3] print('修改前:',a,id(a)) # 修改前: [1, 2, 3] 2157408768520 # 通过索引修改列表 a[1] = 10 print('修改后:',a,id(a)) # 修改后: [1, 10, 3] 2157408768520 # 为变量重新赋值 a = [3,2,1] print('修改后:',a,id(a)) # 修改后: [3, 2, 1] 2157410050440 a = [1,2,3] b = a # a [1, 2, 3] 2369880478216 # b [1, 2, 3] 2369880478216 b = [12,3,45] # a [1, 2, 3] 2075700318728 # b [12, 3, 45] 2075701600648 print('a',a,id(a)) print('b',b,id(b)) # == != is is not # == != :比较的是对象的值是否相等 # is is not :比较的是对象的id是否相等(比较两个对象是否是同一个兑现) a = [1,2,3] b = [1,2,3] print(a == b) # a和b的值相等,使用==会返回True print(a is b) # a和b不是同一个对象,内存地址不同,使用is会返回False
- 字典属于一种新的数据结构,称为映射(mapping)
- 字典的作用和列表类似,都是用来存储对象的容器
- 列表存储数据的性能很好,但是查询数据的性能很差
- 在字典中,每一个元素都有一个唯一的名字,通过该唯一的名字可以快速的查找到指定的元素
- 在查询元素时候,字典的效率是非常快的
在这个唯一的名字,我们称其为键(key),通过key可以快速的查询value
这个对象,我们称其为值(value)
所以字典,我们也称为键值对(key-value)结构
每个字典中都可以有多个键值对,而每一个键值对我们称其为一项(item)
# 字典 # 使用{}来创建字典 d = {} #创建了一个空字典 # 创建一个保存有数据的字典 # 语法: # {key:value,key:value,key:value,...} # 字典的值可以是任意对象 # 字典的键可以是任意的不可变对象(int、str、bool、tuple。。。) # 字典的键是不能重复的,如果出现重复的后边的会替换到前边的 # d = {'name':'孙悟空','age':12,'gender':'男'} d = { 'name':'孙悟空', 'age':12, 'gender':'男' } print(d,type(d)) #{'name': '孙悟空', 'age': 12, 'gender': '男'} <class 'dict'> # 需要根据键来获取值 print(d['name'],d['age'],d['gender']) #孙悟空 12 男 # 如果使用了字典中不存在的键,会报错 # print(d['hello']) #KeyError: 'hello'
# 创建字典 # 使用{} # 语法:{k1:y1,k2:y2,k3:y3} d = {'name':'孙悟空','age':12,'sex':'男'} print(d,type(d)) # {'name': '孙悟空', 'age': 12, 'sex': '男'} <class 'dict'> # 使用dict()函数来创建字典 # 每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串) d = dict(name='孙悟空',age=12,gender='男') # 也可以将一个包含有双值子序列的序列转换为字典 # 双值序列,序列中只有两个值,[1,2]('a',3)'ab' # 子序列,如果序列中的元素也是序列,那么我们就成这个元素为子序列 # [(1,2),(3,4)] d = dict([('name','孙悟空'),('age',12),('sex','男')]) print(d,type(d)) # {'name': '孙悟空', 'age': 12, 'sex': '男'} <class 'dict'> d = dict(name='孙悟空',age=12,gender='男') # len()获取字典中键值对的个数 print(len(d)) # 3 # in 检查字典汇总是否包含指定的键 # not in 检查字典中是否不包含指定的键 print('name' in d,'houge' not in d) # True True # 获取字典中的值,根据键来获取值 # 语法:d[key] print(d['name']) #孙悟空 n = 'name' print(d[n]) #孙悟空 # 通过[]来获取值时,如果键不存在的时候,会抛出异常 #KeyError: 'nam' # get(key[,default])该方法用来根据键获取字典中的值 # 如果获取的键在字典中不存在,返回None # 也可以指定一个默认值,来作为第二个参数,这样获取不到值时返回默认值 print(d.get('name')) print(d.get('hello','默认值')) # 修改字典 # d[key] = value 如果key存在则覆盖,不存在则添加 d['name'] = 'sunwukong' d['address'] = '花果山' print(d) #{'name': 'sunwukong', 'age': 12, 'gender': '男', 'address': '花果山'} # setdefault(key[,default]) 可以用来向字典中添加key-value # 如果key已经存在于字典中,则返回key的值,不会对字典做任何操作 # 如果key不存在,则向字典汇总添加这个key,并设置value result = d.setdefault('name','猪八戒') #字典中这个key 如果已经有值则不做任何改变返回原值 result = d.setdefault('hello','默认值') #字典中没有这个key,则会添加这个key,并给这个key一个默认值 print(result) print(d) # update([other]) # 将其他的字典中的key-value添加到当前字典中 # 如果有重复的key,则后边的会替换掉当前的 d = {'a':0,'b':1} d2 = {'c':2,'d':3,'e':4,'a':5} d.update(d2) print(d) #{'a': 5, 'b': 1, 'c': 2, 'd': 3, 'e': 4} # 删除,可以使用del来删除字典中的key-value del d['a'] del d['b'] print(d) #{'c': 2, 'd': 3, 'e': 4} # popitem() # 随机删除字典中的一个键值对,一般都会删除最后一个键值对 # 删除之后,他会将删除的key-value作为返回值返回 # 返回的是一个元组,元组中有两个元素,第一个元素是删除的key,第二个是删除的value # 当使用popitem()删除一个空字典时,会抛出异常 # d.popitem() # result = d.popitem() # print(d,result)#{'c': 2} ('d', 3) # pop(key[,default]) # 根据key删除字典中的key-value # 会将被删除的value返回 # 如果删除不存在的key,会抛出异常 # 如果指定了默认值,再删除不存在的key时候,不会报错,而是直接返回默认值 result = d.pop('d') # {'c': 2, 'e': 4} 3 # result = d.pop('z') # KeyError: 'z' result = d.pop('z','默认值') # {'c': 2, 'd': 3, 'e': 4} 默认值 # print(d,result) # del d['z'] #'z'不存在 ,报错 KeyError: 'z' # result = d.popitem() # result = d.popitem() # result = d.popitem() # result = d.popitem() #KeyError: 'popitem(): dictionary is empty' # clear()用来清空字典 d.clear() #{} # print(d) # copy() # 该方法用于对字典进行浅复制 # 复制以后的对象,和原对象是独立的,修改一个不会影响另一个 # 注意:浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制 d = {'a':1,'v':3} d2 = d.copy() print(d2) d = {'a': {'name':'孙悟空','age':18},'v':3} d2 = d.copy() #{'a': {'name': '孙悟空', 'age': 18}, 'v': 3} # {'a': {'name': '孙悟空', 'age': 18}, 'v': 3} d2['a']['name'] = '猪八戒' # {'a': {'name': '猪八戒', 'age': 18}, 'v': 3} # {'a': {'name': '猪八戒', 'age': 18}, 'v': 3} print(d,'\n',d2) print('d',d,id(d)) print('d2',d2,id(d2))
# 遍历字典 # keys()该方法会返回字典的所有的key # 该方法会返回一个序列,序列中保存有字典的所有键 d = {'name':'孙悟空','age':12,'sex':'男'} # 通过遍历keys()来获取所有的键 for k in d.keys(): pass # print(k,d[k]) # name 孙悟空 # age 12 # sex 男 # value() # 该方法会返回一个序列,序列中保存有字典的左右的值 for v in d.values(): pass # print(v) # 孙悟空 # 12 # 男 # items() # 该方法返回字典中所有的项 # 它会返回一个序列,序列中包含有双值子序列 # 双值分别是,字典中的key和value print(d.items()) #dict_items([('name', '孙悟空'), ('age', 12), ('sex', '男')]) for k,v in d.items(): pass # print(k,'=',v) # name = 孙悟空 # age = 12 # sex = 男
- 集合和列表非常相似
- 不同点:
1.集合中只能存储不可变对象
2.集合中存储的对象是无序的(不是按照元素的插入顺序存储的)
3.集合中不能出现重复的元素
# 集合 # 使用{}来创建集合 s = {1,23,4,5,6,8,9,23} # <class 'set'> # s = {[1,23,5],[12,5]} # TypeError: unhashable type: 'list' # 使用set()函数来创建集合 s = set() #空集合 set() <class 'set'> s = set([1,232,34,35,65,6]) #{1, 34, 35, 65, 6, 232} <class 'set'> s = set('hello') #{'h', 'l', 'o', 'e'} <class 'set'> # 使用set()将字典转换为集合时,只会包含字典中的键 s = set({'a':1,'b':3}) #{'a', 'b'} <class 'set'> # 创建集合 s = {'a','b',1,3,5,1} #{1, 'a', 3, 5, 'b'} <class 'set'> # 使用in 和 not in 来检查集合中的元素 print('c' in s) #False # 使用len()来获取集合中元素的数量 print(len(s)) #5 # add()向集合中添加元素 s.add(12) s.add('集合') #{1, 3, '集合', 5, 12, 'a', 'b'} <class 'set'> print(s.add(123)) #None # update() # 将一个集合中的元素添加到当前集合中 # update()可以传递序列或字典作为参数,字典只会使用键 s2 = set('hello') #创建一个新的集合 {'h', 'l', 'e', 'o'} <class 'set'> s.update(s2) #{1, 3, 5, '集合', 'o', 'a', 12, 'h', 'l', 'e', 123, 'b'} <class 'set'> s.update((1,23,45,56,67,88)) #{1, 3, 67, 5, 'e', 'o', 88, 12, 45, '集合', 'b', 'a', 'l', 23, 56, 123, 'h'} <class 'set'> s.update({1:'ad',456:'sdf'}) # {1, 3, 67, 5, 'e', 456, 12, 'h', 23, 88, 'a', 'o', 'l', 'b', '集合', 45, 56, 123} <class 'set'> # {1, 3, 67, 5, 'e', 456, 12, 'h', 23, 88, 'a', 'o', 'l', 'b', '集合', 45, 56, 123} <class 'set'> # pop()随机删除并返回一个集合中的元素 result = s.pop() print(result) # remove()删除集合中的指定元素 s.remove(12) s.remove("集合") # {3, 67, 5, 'e', 'l', 456, 23, 88, 56, 'h', 'a', 45, 'o', 'b', 123} <class 'set'> # clear()清空集合 s.clear() #set() <class 'set'> # copy()对集合进行浅复制 print(s,type(s))
# 在对集合做运算时,不会影响原来的集合,而是返回一个运算结果 # 创建两个集合 s = {1,34,354,565,76} s2 = {1,435,65,676,76} # & 交集运算 print(s & s2) # {1, 76} # | 并集运算 print(s | s2) # {1, 34, 354, 65, 676, 76, 435, 565} # - 差集 print(s - s2) # {34, 565, 354} print(s2 - s) # {65, 435, 676} # ^ 异或集 获取只在一个集合中出现的元素 print(s ^ s2) # {65, 34, 435, 676, 354, 565} # <= 检查一个集合是否是另一个集合的子集 # 如果a集合中的元素全部都在b集合中出现,那么a集合就是b集合的子集,b集合就是a集合的超集 print(s <= s2) #False a = {1,2,3} b = {1,2,3,5,6} print(a <= b) #True print(a < b) #True print(b >= a) #True print(b > a) #True # < 检查一个集合是否是另一个集合的真子集 # 如果超集b中含有子集a中的所有的元素,并且b中还有a中没有的元素,则b就是a的真超集,a是b的真子集 print(s < s2) #False # >= 检查一个集合是否是另一个集合的超集 # > 检查一个集合时否是另一个集合的真超集 print(s >= s2) #False print(s > s2) #False
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。