"""集合的定义
- 无序的唯一对象集合
- 用大括号{}包围,对象相互之间使用逗号分隔
- 集合是动态的,可以随时添加或删除元素
- 集合是异构的,可以包含不同类型的数据
"""
- 集合的使用-创建
1. 通过使用{}填充元素
# 1. 通过使用{}填充元素
set1 = {1, 2, 3}
print(type(set1), set1)
2. 通过构造方法 set(iterable)
# 2. 通过构造方法 set(iterable)
# 从字符串中添加元素
set2 = set('hefeiwtt')
print(type(set2), set2)
# 从列表中添加元素
set3 = set([1, 2 ,3])
print(type(set3), set3)
# 从元组中添加元素
set4 = set((1, 2, 3, 5))
print(type(set4),set4)
# 不传,返回空的集合
set5 = set()
print(type(set5),set5)
3. 通过集合推导式
# 3. 通过集合推导式
set6 = {i for i in range(5) if i % 2 ==0}
print(type(set6), set6)
- 集合的使用-成员检测
"""集合的使用:成员检测
- in: 检查一个对象是否在集合中,如果在则返回True, 否则返回False
- not in: 检查一个集合是否不包含某个元素。如果不在返回True, 否则返回False
"""
set7 = {1, 2, 5}
# # 1. in
print(1 in set7)
# # 2. not in
print(8 not in set7)
- 集合的方法-add()
"""集合方法add()
- add(item): 将单个对象添加到集合中
- 入参:对象item
- 返回:None
"""
"""add(item)"""
set8 = set()
set8.add(1)
set8.add(2)
set8.add("hefeiwtt")
print(type(set8),set8)
- 集合的方法-update()
"""集合方法update()
- update(iterable)
- 批量添加来自可迭代对象中的所有元素
- 入参:可迭代对象iterable
- 返回:None
"""
"""update(iterable)"""
set9 = set()
# 批量添加字符串中的元素
set9.update('hefeia')
print(type(set9), set9)
# 批量添加列表中的元素
set9.update([1, 2, 3])
print(type(set9), set9)
# 批量添加元组中的元素
set9.update((7, 8, 9))
print(type(set9), set9)
# 批量添加集合中的元素
set9.update({'p','y'})
print(type(set9), set9)
- 集合的方法-remove()
"""集合方法remove()
- remove(item): 从集合中移除指定元素item
- 入参:指定元素值
- 返回:None
- 如果item不存在于集合中则会引发KeyError
"""
"""remove(item)"""
# 1. 元素存在
set10 = {1, 2, 'hefei'}
set10.remove(1)
print(type(set10), set10)
# 2. 元素不存在会报错
# set10.remove(100)
- 集合的方法-discard()
"""集合方法discard()
- discard(item): 从集合中移除指定对象item
- 入参:指定对象值
- 返回:None
- 元素item不存在没影响,不会抛出KeyError错误
"""
"""discard(item)"""
# 1. 元素存在
set11 = {1, 2, 3,'hefei'}
set11.discard(1)
print(type(set11), set11)
# 2. 元素不存在会报错
set11.discard(100)
- 集合的方法-pop()
"""集合方法pop()
- pop(): 随机从集合中移除并返回一个元素
- 入参: 无
- 返回:被移除的元组
- 如果集合为空则会引发KeyError
"""
"""pop()"""
set12 = {1, 2, 'hefeiwang'}
set12.pop()
print(type(set12), set12)
- 集合的方法-clear()
"""集合方法clear()
- clear(): 清空集合,移除所有元素
- 入参: 无
- 返回:None
"""
"""clear()"""
set13 = {1, 3, 4, 6}
set13.clear()
print(type(set13), set13)
- 集合的运算-交集
"""集合运算-交集
- 交集运算
- intersection()
- 操作符: &
"""
"""intersection &"""
a = {1, 3, 2}
b = {5, 1, 4}
# 1. 交集运算
print(a.intersection(b))
print(a & b)
- 集合的运算-并集
"""集合运算-并集
- 并集运算
- union()
- 操作符: |
"""
"""union |"""
c = {1, 3, 2}
d = {5, 1, 4}
print(a.union(b))
print(a | b)
- 集合的运算-差集
"""集合运算-差集
- 差集运算
- difference()
- 操作符: -
"""
"""difference -"""
e = {1, 3, 2}
f = {5, 1, 4}
print(a.difference(b))
print(a - b)
- 集合推导式
"""集合推导式
- 类似列表推导式,同样集合支持集合推导式
- 语法: {x for x in ... if ...}
"""
"""实例:
寻找hefeidd 与 hello world中共同的字母
"""
# 传统方法
set14 = set()
for s in 'hefeidd':
if s in 'hello world':
set14.add(s)
print(set14)
# 集合推导式
set15 = {s for s in 'hefeidd' if s in 'hello world'}
print(set15)