一、集合常用方法
特别注意:集合是没有索引的!!!
1.set()
集合set是一个无序的不重复元素序列
常用来对两个列表进行 交并差 的处理
集合与列表一样,支持所有不可变的数据类型,如元组,字符串,数值类型
集合的创建:
通过set函数来创建集合,不能使用{}来创建空集合
set0 = set() -> 空集合
set1 = set([1, 2, 3]) -> 传入列表或者元组
set2 = {1, 2} -> 传入元素
set3 = {} -> 错误,不可以使用{}来创建集空合,计时器会认为是字典
# 创建空集合
a = set()
print(a)
print(type(a))
# 使用 set方法 和 {} 方法 传入列表或者元组
b = set(['abd', 'b'])
c = {(1, 2), '123', 'a'}
print(b)
print(c)
print(type(b))
print(type(c))
# 这里需要注意,如果使用的是set方法的话,不可以同时传入列表和元组,如果同时传入则会报错。
# 不可以使用{}创建空集合
d = {}
print(d, type(d))
2.add函数:
功能: 用于集合中添加一个元素,如果集合中已存在该元素则该函数不执行。
用法: set.add(item)
参数: item表示要添加到集合中的元素。 且无返回值。
refer_to = ['a', 'b', 'c']
set0 = set()
set0.add(refer_to[0])
set0.add(refer_to[-1])
set0.add(True)
set0.add(None)
print(set0)
3.update函数
功能: 加入一个新的集合(或列表,元组,字符串),如新集合内的元素在原集合中存在则无效。
用法:set.update(iterable)
参数:iterable表示 集合、列表、元组、字符串。
无返回值,直接作用于原集合
a_tuple = ('a', 'b')
set0 = set()
set0.update(a_tuple)
print(set0)
set0.update('python') # 这里加入的虽然是python字符串,但是在加入后,会分解为字符。
print(set0)
4.remove函数
功能: 将集合中的某个元素删除,如元素不存在将会报错
用法: set.remove(item) # 注意是元素不是索引
参数: item表示当前集合中的一个元素
无返回值,直接作用于原集合
set0 = {'a', 'b'}
set0.remove('a')
print(set0)
print(type(set0))
5.clear函数
功能: 清空当前集合中的所有元素
用法: set.clear()
无参数,无返回值,直接作用于原集合
set0 = set([1, 2, 3])
set0.clear()
print(set0, type(set0))
6.del函数
再次强调,集合没有索引,所以我们无法通过索引删除集合中的元素
只能删除集合对象自身
注意事项:
集合无法通过索引获取元素
集合无获取元素的任何方法
集合只是用来处理列表或元组的一种临时类型,不适合存储于传输
set0 = {1, 2, 3}
print(set0, type(set0))
del set0
print(set0) # 当使用del方法后再次输出set0是报错 `NameError: name 'set0' is not defined`
7.difference函数
集合的差集-difference函数
什么是差集?
a,b两个集合,由所属于 a 且不属于 b 的元素组成的集合叫做 a 与 b 的差集
功能:返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合中
用法:set0.difference(set1)
参数:set1表示当前集合需要对比的集合
返回值:返回原始集合于对比集合的差集(即set0与set1的差集)
refer1 = ['a', 'c']
refer2 = ['c', 'd']
set0 = set(refer1)
set1 = set(refer2)
result1 = set0.difference(set1)
print(result1)
8.intersection函数
集合的交集
什么是交集?
a, b两个集合分别拥有相同的元素集,称为a与b的交集
返回两个或更多集合中都包含的元素,即交集
用法:set0.intersection(set1…)
参数:set1…表示与当前集合对比的1或者多个集合
返回原始集合与对比集合的交集
list0 = ['a', 'b', 'c', 'd']
list1 = ['a', 'c', 'e', 'g']
list2 = ['a', 'e', 'h']
set0 = set(list0)
set1 = set(list1)
set2 = set(list2)
result = set0.intersection(set1, set2)
print(result)
# 因为集合中没有索引的操作,所以把集合转换为列表才可以使用索引
result1 = list(result)
print('三者交集为{}'.format(result1[0]))
9.union函数
什么是并集?
a, b两个集合中所有的元素,去掉重复,即为a与b的并集
集合的并集,
功能:返回多个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次
用法:a.union(b…)
参数:
b…表示与当前集合对比的1或多个集合
a表示焦点集合
返回值:返回原始集合与对比集合的并集
s1 = ['a', 'b', 'c']
s2 = ['d', 'e', 'f']
set0 = set(s1)
set1 = set(s2)
print(set0)
print(set1)
result2 = set0.union(set1)
print(result2)
print(len(result2))
10. isdisjoint函数
功能:判断两个集合是否包含相同的元素,如果没有返回True,否则返回False
用法:set0.isdisjoint(set1)
参数:set1表示与当前集合用来判断的集合
返回值:返回一个布尔值True或False
refer_to = {'a', 'b', 'c'}
entity1 = {'c', 'd', 'e'}
entity2 = {'f', 'g'}
result1 = refer_to.isdisjoint(entity1)
print(result1)
result2 = refer_to.isdisjoint(entity2)
print(result2)
11.集合与列表的区别
功能 | 列表 | 集合 |
---|---|---|
顺序 | 有序 | 无序 |
内容 | 可重复 | 不可重复 |
功能 | 用于数据的使用 | 用于数据的交、并、差集的获取 |
索引 | 有索引 | 无索引 |
符号 | [] [1, 2, 3] | {} {1, 2, 3} |
共同学习,写下你的评论
评论加载中...
作者其他优质文章