继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【2023年】第26天 集合常用方法

谦瑞
关注TA
已关注
手记 78
粉丝 8
获赞 8

一、集合常用方法
特别注意:集合是没有索引的!!!
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}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP