Set(集合)
-
集合(set)是一个无序,不重复元素序列;
-
可以使用大括号 { } 或者 set() 函数创建集合。注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典;
# 定义一个集合:集合是一个无序,不重复元素序列
peoples = {'jack', 'lily', 'jack', 'lucy', 'tom'}
print(type(peoples)) # 集合的数据类型
print(peoples) # 输出集合的值,重复的数据只会输出一次
# 用 set() 方法创建一个集合
set1 = set(("how", "are", "you"))
print(type(set1))
# 创建一个空集合,只能用 set 方法
set2 = set()
print(type(set2))
# 大括号{} 是用来创建空字典的
set3 = {}
print(type(set3))
输出结果:
- 可以使用 in 和 not in 判断某个对象是否在集合中;
# 定义一个集合:集合是一个无序,不重复元素序列
peoples = {'jack', 'lily', 'jack', 'lucy', 'tom'}
print("lucy" in peoples) # True
print("ken" in peoples) # False
print("lucy" not in peoples) # False
print("ken" not in peoples) # True
Python 中集合(Set)的内置方法:
1、set.add(elmnt):给集合添加元素,如果添加的元素在集合中已经存在,则不执行任何操作;
2、set.update(set2):用于修改当前集合,可以添加新的集合或元素到当前集合中,如果添加的元素在集合中已存在,则不再添加(重复的元素只会出现一次);
3、set.clear():用于清空集合中所有元素;
4、set.copy():复制集合,返回新的集合;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"thank", "you"}
set1.add("hello") # 向集合中添加元素(集合中的元素是无序的)
print(set1)
set1.update(set2) # 用 set2 更新 set1
print(set1)
set3 = set1.copy() # 复制集合,返回新的集合
print(set3)
set1.clear() # 清空集合
print(set1)
输出结果:
5、set.difference(set2):返回两个集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合中;返回一个新的集合;
6、set.difference_update(set2):用于移除两个集合中都存在的元素;和 difference() 方法的区别是,difference_update() 是在原集合(set)中直接移除,没有返回值;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}
# 返回一个新的集合,新集合的元素包含在 set1 中,但是不包含在 set2 中
set3 = set1.difference(set2)
print(set3)
# 直接在 set1 中移除 set2 中也存在的同名元素,没有返回值
set1.difference_update(set2)
print(set1)
输出结果:
7、set.intersection(set1, set2 ... etc):返回集合的交集,即返回两个集合中都存在的元素,返回新的集合;
8、set.intersection_update(set1, set2 ... etc):也是用于计算交集,和 intersection() 方法的区别是,intersection_update() 方法是在原集合(set)中直接移除不重叠的元素,没有返回值;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}
# 返回一个新的集合,新集合的元素既包含在 set1 中,也包含在 set2 中
set3 = set1.intersection(set2)
print(set3)
# 直接在 set1 中移除 set2 中不存在的元素,保留 set2 中也存在的同名元素,没有返回值
set1.intersection_update(set2)
print(set1)
输出结果:
9、set.symmetric_difference(set2):返回两个集合中不重复的元素集合,即移除两个集合中都存在的元素;
10、set.symmetric_difference_update(set2):移除当前集合(set)中在另外一个指定集合(set2)相同的元素,并将另外一个指定集合(set2)中不同的元素插入到当前集合(set)中;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}
# 返回两个集合中不重复的元素集合,即移除两个集合中都存在的元素
set3 = set1.symmetric_difference(set2)
print(set3)
# 直接在 set1 中移除 set2 中也存在的同名元素,并将 set2 中不同的元素插入到 set1 中
set1.symmetric_difference_update(set2)
print(set1)
输出结果:
11、set.union(set1, set2...):返回两个或多个集合的并集,即新的集合包含了所有集合中的所有元素,不过重复的元素只会出现一次;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"i", "am", "fine", "thank", "you"}
# 返回两个或多个集合的并集
set3 = set1.union(set2)
print(set3)
输出结果:
12、set.isdisjoint(set2):用于判断两个集合是否包含相同的元素,如果不包含,返回 True;否则返回 False;
13、set.issubset(set2):用于判断集合的所有元素是否都包含在指定集合(set2)中,,如果是,返回 True;否则返回 False;
14、set.issuperset(set2):用于判断指定集合(set2)的所有元素是否都包含在原始集合中,如果是,返回 True;否则返回 False;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set2 = {"thank", "you"}
print(set1.isdisjoint(set2)) # False
print(set1.issubset(set2)) # False
print(set1.issuperset(set2)) # False
15、set.discard(item):用于移除指定的元素;没有返回值;
16、set.remove(item):用于移除指定的元素,返回移除的元素;如果移除的元素不存在,则会报错;而 discard() 方法不会报错;
# 定义一个集合:集合是一个无序,不重复元素序列
set1 = {"how", "are", "you"}
set1.discard("you") # 移除指定的元素
print(set1)
set1.discard("hello") # 移除一个不存在的元素时,不执行任何操作
print(set1)
set1.remove("how") # 移除指定的元素
print(set1)
set1.remove("hello") # 移除一个不存在的元素,会报错
print(set1)
输出结果:
17、set.pop():用于随机移除一个元素,返回移除的元素;
set1 = {"how", "are", "you"}
print(set1.pop()) # 随机移除一个元素,并返回该元素
print(set1)
print(set1.pop())
print(set1)
print(set1.pop())
print(set1)
输出结果: