一.定义集合
集合:可以包含多个元素,用逗号分割;
集合的元素遵循三个原则:
1.每个元素必须是不可变类型
2.没有重复的元素
3.无序
1.update
描述:扩展集合
参数:要添加的集合
返回值:None(原集合会被修改)
s1={‘apple‘,‘voivo‘,‘oppo‘,‘huwei‘} s2={‘hshshs‘} s3=s1.update(s2) # 扩展集合s1 print(type(s3),s3)# 查看返回值 print(type(s1),s1)# 打印扩展后的集合s1
输出结果
1 2 |
|
2、copy()
描述:复制集合
参数:无
返回值:返回一个和原集合一样的新的集合
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.copy() # 对集合s1进行复制 print(type(s1),s1) print(type(s2),s2)
输出结果
<class ‘bool‘> True <class ‘bool‘> False
3、pop()
描述:随机删除集合中的一个元素
参数:无
返回值:返回被删除的元素
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.pop() # 随机删除集合中的一个元素 print(type(s1),s1) print(type(s2),s2)
输出结果
<class ‘set‘> {‘lisa‘, ‘knight‘, ‘william‘} <class ‘str‘> pudding
4、clear()
描述:清空字典
参数:无
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.clear() # 清空集合 print(type(s1),s1) print(type(s2),s2)
<class ‘set‘> set() <class ‘NoneType‘> None
5、remove()
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.remove(‘lisa‘) print(type(s1),s1) print(type(s2),s2) # 返回值为空
输出结果
<class ‘set‘> {‘william‘, ‘pudding‘, ‘knight‘} <class ‘NoneType‘> None
6、add()
描述:为集合增加元素
参数:element 元素
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.add(‘sky‘) print(type(s1),s1) print(type(s2),s2) # 返回值为空
输出结果
<class ‘set‘> {‘pudding‘, ‘lisa‘, ‘william‘, ‘knight‘, ‘sky‘} <class ‘NoneType‘> None
7、difference()
描述:差集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个差集
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = {‘sky‘,‘william‘,‘hello‘,‘knight‘} s3 = s1.difference(s2) print(type(s3),s3) # 得到一个差集。 print(type(s1),s1) # 原集合不更新
输出结果
<class ‘set‘> {‘lisa‘, ‘pudding‘} <class ‘set‘> {‘pudding‘, ‘lisa‘, ‘knight‘, ‘william‘}
8.difference_update
述:差集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = {‘sky‘,‘william‘,‘hello‘,‘knight‘} s3 = s1.difference_update(s2) print(type(s3),s3) # 返回None print(type(s1),s1) # 原集被更新
输出结果
<class ‘NoneType‘> None <class ‘set‘> {‘pudding‘, ‘lisa‘}
9、discard()
描述:删除集合中指定的元素
参数:element 元素
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = s1.discard(‘william‘) print(type(s2),s2) print(type(s1),s1)
输出结果
<class ‘NoneType‘> None <class ‘set‘> {‘lisa‘, ‘knight‘, ‘pudding‘}
10、intersection()
描述:交集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个交集
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = {‘william‘,‘xxxx‘} s3 = s1.intersection(s2) print(type(s3),s3) # 得到一个交集 print(type(s1),s1) # 原集合不更新
输出结果
<class ‘set‘> {‘william‘} <class ‘set‘> {‘william‘, ‘lisa‘, ‘knight‘, ‘pudding‘}
11、intersection_update()
描述:交集运算,原集合更新
参数:set 要对比的集合
返回值:None(原集合会被修改)
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = {‘william‘,‘xxxx‘} s3 = s1.intersection_update(s2) print(type(s3),s3) # 返回None print(type(s1),s1) # 原集合更新
输出结
<class ‘NoneType‘> None <class ‘set‘> {‘william‘}
12、union()
描述:并集运算,原集合不更新
参数:set 要对比的集合
返回值:得到一个新的集合,两个集合中都有的元素都合并成一个
s1 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s2 = {‘william‘,‘pudding‘,‘xxxxxx‘} s3 = s1.union(s2) print(type(s3),s3) # 返回得到一个新的集合,两个集合中都有的元素都合并成一个。 print(type(s1),s1) # 并集运算,原集合不更新
输出结
<class ‘set‘> {‘xxxxxx‘, ‘knight‘, ‘william‘, ‘lisa‘, ‘pudding‘} <class ‘set‘> {‘pudding‘, ‘lisa‘, ‘knight‘, ‘william‘}
13、issubset()
描述:判断原集合是否是要对比的集合的子集,如果是则返回True,否则返回False
参数:set 要对比的集合
返回值:得到一个布尔值
s1 = {‘william‘,‘pudding‘} s2 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s3 = s1.issubset(s2) # s1是否是s2的子集,所以返回True print(type(s3),s3) #-------------------------------------- s4 = {‘william‘,‘xxxxx‘} s5 = {‘william‘,‘lisa‘,‘knight‘,‘pudding‘} s6 = s4.issubset(s5) # s4不是s5的子集,所以返回False print(type(s6),s6)
<class ‘bool‘> True <class ‘bool‘> False
14.利用setdefault解决重复赋值
1:key存在,则不能赋值,key不存在则设置默认值
2:key存在,返回是key对应的已有的值,key不存在,返回的则是要设置的默认值
d={} print(d.setdefault(‘a‘,1)) d={‘a‘:2222} print(d.setdefault(‘a‘,1))
eg
s=‘hello alex alex say hello sb sb‘ dic={} words=s.split() for word in words: dic.setdefault(word,s.count(word)) print(dic)
利用集合,去掉重复,减少循环次数
s =‘hello alex alex say hello sb sb‘ dic={} word = s.split() words_set=set(words) for word in words_set: dic[word]=s.count(word) print(dic)
in:字符串,列表,元组,字典,集合
for:字符串,列表,元组,字典,集合
解压:字符串,列表,元组,字典,集合
布尔值的获取
所有的数据类型,都自带布尔值,也就是说我们可以直接用数据当做判断条件,比如:
x=10 if x: print(‘ok‘)#会打印ok,因为x自带的布尔值为True
其他数据类型自带的布尔值是什么?
所有的数据类型自带的布尔值无非是True和False两种
而空字符串,空字典,空列表,空集合等值都为空的,以及None,False的布尔值为False
其余数据类型的值都为True