集合及相关操作
集合是Python中一个无序的不重复元素序列
可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典
下面将介绍Python中集合的一些常见用法:
1.集合的定义
(1) basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
(2) fruit = set(("apple", "banana", "cherry"))
'''
当使用print()函数打印输出时,会自动将集合中重复的元素去除,且每次打印返回的顺序并不和初始的一致。
在使用set()函数创建集合时,一定要注意双括号。
'''
2.向集合中添加元素
(1)
'''
用add(element)方法给集合添加元素,如果添加的元素在集合中已存在,则add()方法就不会添加元素
如向fruits集合添加一个元素:
'''
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
(2)
'''
用update(set)方法修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略
如合并x和y两个集合,重复元素只会出现一次:
'''
x = {"apple", "banana", "cherry"}
y = {"google", "runoob", "apple"}
x.update(y)
print(x) # 输出结果:{'banana', 'apple', 'google', 'runoob', 'cherry'}
3.删除集合元素
(1)
'''
用remove(item)方法移除集合中的指定元素
如移除元素banana:
'''
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits) # 输出结果:{'cherry', 'apple'}
(2)
'''
用discard(value)方法移除指定的集合元素,用remove()方法在移除一个不存在的元素时会发生错误,
而discard()方法不会,用法与remove()相同
'''
fruits.discard("banana")
(3)
'''
用pop()方法随机移除一个元素,虽然此方法将删除最后一项,
但是请记住,集合set是无序的,因此我们不知道被删除的是什么元素
'''
set.pop()
(4) 用clear()方法移除集合中的所有元素
set.clear()
'''
注意:clear()函数的功能是移除集合中所有元素,而del()的功能是删除集合。
所以,当对一个集合使用clear()方法或del函数,并分别对其使用print()函数打印输出时,前者会返回一个空的集合,而后者会报错:NameError: name 'fruit' is not defined.
clear()会从内存删除集合与清空集合,但内存地址不删除,del()则会从内存中删除。
'''
4.判断集合是否包含相同元素
'''
使用isdisjoint(set)方法判断两个集合是否包含相同的元素,不包含相同的元素返回True,而包含相同的元素则返回False
如判断集合y中是否有包含集合x的元素:
'''
x = {'a', 'b', 'c'}
y = {'x', 'y', 'z'}
print(x.isdisjoint(y)) # 输出结果:True
5.交集(1),(2),子集(3),超集(4),差集(5),(6)
(1)
返回交集,用intersection(set1, set2 ... etc)方法返回两个或更多集合中都包含的元素
返回一个新集合,该集合的元素既包含在集合x又包含在集合y中:
x = {'a', 'b', 'c'}
y = {'x', 'y', 'z', 'c'}
print(x.intersection(y)) # 输出结果:{'c'}
计算多个集合的交集:
x = {'a', 'b', 'c'}
y = {'x', 'y', 'z', 'c'}
z = {'c', 'a', 'd'}
st = x.intersection(y, z)
print(st) # 输出结果:{'c'},返回的集合仅包含在所有集合中都存在的元素
(2)
计算交集并从原集合中移除所有非交集中的元素
注意intersection_update()方法不同于intersection()方法,因为intersection()方法是返回一个新的集合,
而intersection_update()方法是在原始的集合上移除不重叠的元素。
如移除x集合中不存在于y集合中的元素:
x = {'a', 'b', 'c'} # y集合不包含a,被移除
y = {'x', 'y', 'b', 'c'}
x.intersection_update(y)
print(x) # 输出结果:{'b', 'c'}
(3)
判断子集,用issubset(set)方法判断集合的所有元素是否都包含在指定集合中,如果是则返回True,否则返回False
如判断集合x是否是集合y的子集
此种情下况返回True:
x = {'a', 'b', 'c'}
y = {'x', 'y', 'z', 'a', 'b', 'c'}
print(x.issubset(y)) # 输出结果:True
此种情况下返回False:
x = {'a', 'b', 'c'}
y = {'x', 'y', 'z', 'a'}
print(x.issubset(y)) # 输出结果:False
(4)
判断超集,用issuperset()方法判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回True,否则返回False
如判断集合x是否为集合y的超集
此种情下况返回True:
x = {'a', 'b', 'c', 'x', 'y', 'z'}
y = {'a', 'b', 'c'}
print(x.issuperset(y)) # 输出结果:True
此种情况下返回False:
x = {'a', 'x', 'y', 'z'}
y = {'a', 'b', 'c'}
print(x.issuperset(y)) # 输出结果:False
(5)
返回差集,用isdifference()方法返回一个集合,此集合为另外两个集合的差集
如计算集合x与集合y的差集并返回
x = {'a', 'b', 'c', 'x', 'y', 'z'}
y = {'a', 'b', 'c'}
st = x.difference(y)
print(st) # 输出结果:{'x', 'y', 'z'}
(6)
计算差集并从原集合中移除所有非差集中的元素,无返回值
如移除集合x中不属于x与y的差集的元素
x = {'a', 'b', 'c', 'x', 'y', 'z'}
y = {'a', 'b', 'c'}
print(x.difference(y)) # 输出结果:{'x', 'y', 'z'}
6.集合的运算
【两个集合之间的计算有4种,分别是|、&、-和^】
先创建两个集合,方便下面对其进行运算
a = set('abcdefg')
b = set('abg')
(1)
a|b表示求并集:集合a或集合b中包含的所有元素
print(a | b) # {'d', 'b', 'e', 'c', 'g', 'f', 'a'}
(2)
a&b表示求交集:集合a和集合b都包含的元素
print(a & b) # {'a', 'b', 'g'}
(3)
a-b表示求差集:集合a中包含而集合b中不包含的元素
print(a - b) # {'e', 'd', 'f', 'c'}
(4)
a^b表示求对称差集:属于集合a和b,但不属于它们的交集的元素
print(a ^ b) # {'e', 'c', 'd', 'f'}
该博客围绕Python中集合展开,介绍了集合是无序不重复元素序列,可用大括号或set()函数创建,空集合需用set()。还阐述了集合的常见用法,包括定义、添加和删除元素、判断元素是否相同,以及交集、子集等关系和集合运算。
12万+

被折叠的 条评论
为什么被折叠?



