集合(set)是一个无序的不重复元素序列。
使用 set()
函数创建集合
注意:
- 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
- 创建格式:
- 同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误
集合的创建
需要注意的是,数据必须保证是唯一的,因为集合对于每种数据元素,只会保留一份。
使用 {} 创建
会自动去除 重复的子项
data_set = {1, 2, 3, 3, 1, 'set1', 'set2', 'set3'}
print(data_set, type(data_set))
# 输出
# {1, 2, 3, 'set1', 'set3', 'set2'} <class 'set'>
set()函数创建集合
set() 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。
列表转换为 集合
data = [1, 2, 3, 4, 5]
data_set_2 = set(data)
print(data_set_2, type(data_set_2))
# 输出
# {1, 2, 3, 4, 5} <class 'set'>
元组 转换为 集合
tup = (7, 8, 9)
data_set_3 = set(tup)
print(data_set_3, type(data_set_3))
# 输出
# {8, 9, 7} <class 'set'>
字符 转换为 集合
str = 'python'
data_set_4 = set(str)
print(data_set_4, type(data_set_4))
# 输出
# {'h', 'n', 'o', 't', 'y', 'p'} <class 'set'>
range
data_set_range = set(range(10))
print(data_set_range, type(data_set_range))
# 输出
# {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} <class 'set'>
集合的基本操作
**s.add(item) **
将 item 添加到 s 集合中
data_set_5 = {1, 2, 3, 4}
data_set_5.add(5)
print(data_set_5)
# 输出
# {1, 2, 3, 4, 5}
update()
参数可以是列表,元组,字典等
data_set_6 = {'python'}
# 单个添加
data_set_6.update('c')
print(data_set_6)
# 输出
# {'python', 'c'}
# 列表
data_set_6.update(['java', 'c++'])
print(data_set_6)
# 输出
# {'python', 'c', 'c++', 'java'}
data_set_6.update((1, 2, 3, 4, 5))
print(data_set_6)
# 输出
# {1, 2, 3, 4, 5, 'c++', 'c', 'java', 'python'}
remove(item)
将 item 从集合中 删除
data_set_7 = {'python', 'c++', 'c'}
data_set_7.remove('c')
print(data_set_7)
# 输出
# {'python', 'c++'}
discard(item) 与 remove(item) 区别在于 discard(item) 如果元素不存在,不会发生错误
data_set_8 = {'python', 'c++', 'c'}
data_set_8.discard('c++')
print(data_set_8)
# 输出
# {'python', 'c'}
pop() 随机删除集合中的一个元素
data_set_9 = {'python', 'c++', 'c', 'javascript'}
data_set_9.pop()
print(data_set_9)
# 输出
# {'javascript', 'python', 'c++'}
len()
计算集合元素个数。
data_set_10 = {'python', 'c++', 'c', 'javascript', 'c#'}
print(len(data_set_10))
# 输出
# 5
clear()
清空集合
data_set_11 = {'python', 'c++', 'c', 'javascript', 'c#'}
data_set_11.clear()
print(data_set_11)
# 输出
# set()
in
判断元素 是否存在 集合中 in,
存在返回 True,不存在返回 False。
data_set_12 = {'python', 'c++', 'c', 'javascript', 'c#'}
print(1 in data_set_12)
# False
print('c' in data_set_12)
# True
intersection(set1, set2 ...)
set1 -- 必需,要查找相同元素的集合
set2 -- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开
会返回一个新集合
set1 = {'c', 'c++', 'js'}
set2 = {'java', 'c#', 'c'}
set3 = {'php', 'c', 'python'}
res = set1.intersection(set2)
print(res)
# 返回一个新集合,该集合的元素既包含在集合 set1 又包含在集合 set2 中:
# {'c'}
# 计算多个集合的交集:
res_2 = set1.intersection(set2, set3)
print(res_2)
# {'c'}
union()
union(set1, set2...)
set1 -- 必需,合并的目标集合
set2 -- 可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开。
方法返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次。
res = set1.union(set2)
print(res)
# {'c', 'java', 'c#', 'js', 'c++'}
# 合并多个集合:
res_2 = set1.union(set2, set3)
print(res_2)
# {'c#', 'c++', 'java', 'js', 'php', 'c', 'python'}