集合
- Python中集合
(set)
类型同数学中的集合概念一致,即包含0个或多个数据项的无序组合,集合没有索引和位置的概念。
可变结合:set(iterable)
set()
函数用于集合的生成,返回结果是一个无重复且排序任意的集合。- set的
()
中要么放可迭代的对象,表示转换成集合类型;要么什么都不放,表示生成空集合。 - 定义:集合也是一个容器类型,可以存放多个数据,集合的最外层表现形式是一对大括号
{}
。
# 定义有元素的集合
myset = {1, 3, 5}
# 创建空集合
myset = set()
# 注意直接 xx = {} 定义的是空字典,不是空集合
特点:
- 无序
- 不重复
- 可变类型
- 功能:关系测试和消除重复元素
- 扩展:list、set、tuple之间可以相互转换,转到set时会去重
- 发现:如果集合都是数字的话,好像默认会把数字从小到大排序!
- 增加元素
set.add(value)
- 删除元素
set.remove(value)
注意:不能根据下标获取数据和不能根据下标修改数据,因为集合是无序的,不能确定集合中的数据,所以不能通过下标修改。
my_set = {1, 3, 5, 0}
# 1. 通过打印集合可以得知,集合是无序的
print(my_set) # {0, 1, 3, 5}
# 2. 不能有重复数据,重复数据只保留一个
# 给集合添加数据
my_set.add(4)
my_set.add(5)
print(my_set) # {0, 1, 3, 4, 5}
# 3. 集合是可变类型,可以在原有内存空间的基础上修改数据,内存地址不变
print(my_set, type(my_set), id(my_set))
# 删除集合数据
my_set.remove(3)
# 可以使用for循环获取集合中的每一个数据
for value in my_set:
print(value)
# 查询、更改的错误演示
# result = my_set[0]
# print(result)
# my_set[1] = 9
# print(my_set)
不可变集合:frozenset(iterable)
特点:冻结的集合,不可变
集合的运算
集合操作 | 含义 |
---|---|
s - t 或 s.difference(t) | 返回集合在集合s中,但不在t中的元素 |
s&t 或 s.intersection(t) | 返回同时在集合s和t中的元素 |
s|t 或 s.union(t) | 返回集合s和t中的所有元素 |
s^t 或 s.symmetric_difference(t) | 返回集合s和t中的元素,但不包括同时在其中的元素 |
错题
- 下列选项中,哪个是集合:( B )
A:set([1,3,5,[6]])
B:{1,3,5,(6)}
C: 以上都不是
D:{(1,3,5),[6]}
知识点:集合里不可以出现字典、列表等可变元素,即便元组里套列表、字典也不行。
集合里的元素、字典里的键必须为不可变元素!
可变类型:列表、字典、集合
不可变类型:数字、字符串、元组