10. 集合(Set)

107 阅读3分钟

一,基本概念

特点

(1)无序性

(2)可以改变,不是序列

(3)包含元素需为不可变数据类型,切不可重复

(4)用{}包括内容

(5)创建空集合必须用函数set()

二,内置函数set([iterable])

作用:将可迭代对象iterable里面的元素取出来重组成一个集合返回

print(set("Chinaa"))

输出为

{'h', 'n', 'C', 'i', 'a'}

三,去重和关系测试

由于集合元素不可重复的特点,所以可以用来进行去重,如上例中去掉了重复的元素“a”;还可以进行关系测试,如测试多组集合数据之间的交集、差集、并集等关系

a = set("abdefga")
b = set("abc")
c = set("aef")
print(c <= a) # 判断c是否是a的子集
print(a - b)  # 返回ab的差集
print(a | b)  # 返回ab的并集
print(a & b)  # 返回ab的交集
print(a ^ b)  # 返回ab中不同时存在的元素(对称差)
print(a | b | c)

四,对象方法

1,查

(1)isdisjoint(other)

作用:如果集合中没有与 other 共有的元素则返回 True

set1 = {"1", 2, 3}
print(set1.isdisjoint([1, 2, '3']))
print(set1.isdisjoint([1, '2', '3']))

输出为

False
True

(2)issubset(other)

作用:如果集合中的每个元素都在 other 之中,则返回 True

set1 = {"1", 2, 3}
print(set1.issubset([1, 2, '3']))
print(set1.issubset(["1", 2, 3, 4,5]))

输出为

False
True

(3)issuperset(other)

作用:如果 other 中的每个元素都在集合之中,则返回 True

set1 = {"1", 2, 3, 4,5}
print(set1.issuperset([1, 2, '3']))
print(set1.issuperset(["1", 2, 3]))

输出为

False
True

2,改

(1)set.update(others)

更新集合,添加来自 others 中的所有元素

set1 = {"1", 2, 3, 4,5}
set1.update([6, '7'])
print(set1)

输出为

{2, 3, 4, 5, 6, '7', '1'}

(2)set.intersection_update(others)

更新集合,只保留其中在所有 others 中也存在的元素

set1 = {"1", 2, 3, 4,5}
set1.intersection_update([5, '7'])
print(set1)

输出为

{5}

(3)set.difference_update(others)

更新集合,移除其中也存在于任意一个 others 中的元素

set1 = {"1", 2, 3, 4,5}
set1.difference_update([5, '7'])
print(set1)

输出为

{2, 3, 4, '1'}

(4)set.add(elem)

将元素 elem 添加到集合中。如果元素已经存在,则没有影响

set1 = {"1", 2, 3, 4,5}
set1.add(5, '7')
print(set1)

输出为

{2, 3, 4, 5, '7', '1'}

(5)set.remove(elem)

从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发 KeyError

set1 = {"1", 2, 3, 4,5}
set1.remove(5)
print(set1)

输出为

{2, 3, 4, '1'}

(6)set.discard(elem)

从集合中移除元素 elem。 如果 elem 不存在于集合中则不做任何操作

(7)set.clear()

从集合中移除所有元素

3,其他

(1)union(others)

作用:返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素(并集)

set1 = {"1", 2, 3, 4,5}
print(set1.union([6, '7']))

输出为

{2, 3, 4, 5, 6, '7', '1'}

(2)intersection(others)

作用:返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素(交集)

set1 = {"1", 2, 3, 4,5}
print(set1.intersection([5, '7']))

输出为

{5}

(3)difference(others)

作用:返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素(差集)

set1 = {"1", 2, 3, 4,5}
print(set1.difference([5, '7']))

输出为

{2, 3, 4, '1'}

(4)copy()

作用:返回原集合的浅拷贝