集合
"""
example01 - 集合的定义
无序性(不能使用下标遍历,如:set1[0]);
互异性(没有重复元素);
确定性(不允许由模棱两可的元素)
Author: Asus
Date: 2021/7/29
"""
set1 = {1, 1, 2, 3, 1, 1, 2}
print(type(set1))
print(set1)
for elem in set1:
print(elem)
set2 = set()
print(type(set2))
print(set2)
集合的运算
-
成员运算:包括in 和 not in两类 -
交并差运算: ? 交集(&),输出两个集合的公共部分,也可以调用intersection() ? 并集(|),把两个集合中的所有元素组合在一起输出,也可以调用union() ? 差集(-),也可以调用,difference() ? 对称差(^),并集减去交集的部分,也可以调用symmetric_difference()
"""
example02 - 集合的运算
Author: Asus
Date: 2021/7/29
"""
set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
print(1 in set1)
print(1 not in set1)
print(set1 & set2)
print(set1.intersection(set2))
print(set1 | set2)
print(set1.union(set2))
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)
print(set1 ^ set2)
print((set1 | set2) - (set1 & set2))
print(set1.symmetric_difference(set2))
set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
set3 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1 < set3)
print(set1 <= set2)
print(set2 > set1)
集合的方法
可变容器(列表、集合、字典)不能放到集合里面
- 集合底层采用了一种叫做哈希类型(高效率存储方案)的存储方式(哈希码/散列码)
- 哈希存储的关键是设计一个好的哈希函数,让不同的对象尽可能地产生不同的哈希码
- 集合在元素查找时效率远高于列表(因为集合是哈希存储而列表是顺序存储),
不依赖问题的规模,是一种常量级时间复杂度的存储方案 - 如果一个对象无法计算哈希码,就不能放到集合中,列表就是无法计算哈希码的对象
"""
example03 - 集合的操作(方法)
Author: Asus
Date: 2021/7/29
"""
set1 = {'apple', 'banana', 'pitaya', 'apple'}
set2 = {True, False, True, True, False}
print(set1)
print(set2)
- 添加元素(add)、删除元素(discard)、清除元素(clear)
set1 = {'apple', 'banana', 'pitaya', 'apple'}
set1.add('grape')
set1.add('durian')
print(set1)
set1.discard('pitaya')
print(set1.pop())
print(set1)
set1.clear()
print(set1)
nums = [1, 1, 10, 10, 10, 5, 3, 9, 9]
print(set(nums))
|