Python集合
Python 集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
parame = {value01,value02,...}
或者
set(value)
集合演示
#basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
#集合去重
print(basket) # {'orange', 'banana', 'pear', 'apple'}
#判断元素是否在集合内
'orange' in basket # True
# 集合的运算
# a = set('abracadabra')
# b = set('alacazam')
print(a) # {'d', 'a', 'r', 'c', 'b'}
print(b) #{'m', 'l', 'a', 'z', 'c'}
#集合a中包含而集合b中不包含的元素
a - b # {'b', 'd', 'r'}
#集合a或b中包含的所有元素
a | b # {'m', 'c', 'b', 'l', 'd', 'z', 'r', 'a'}
#集合a和b中都包含了的元素
a & b # {'a', 'c'}
#不同时包含于a和b的元素
a ^ b #{'r', 'd', 'b', 'm', 'z', 'l'}
集合推到式
类似列表推导式,同样集合支持集合推导式(Set comprehension):
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a) {'r', 'd'}
集合的基本操作
-
添加元素
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
oneset = set(("Google", "Huawei", "Taobao"))
oneset.add("Tengxun")
print(oneset) # {'Taobao', 'Google', 'Tengxun', 'Huawei'}
s.update( x )
这个方法,也可以添加元素,且参数可以是列表,元组,字典等
oneset = set(("Google", "Huawei", "Taobao"))
oneset.update({1,3})
print(oneset) # {1, 3, 'Google', 'Huawei', 'Taobao'}
oneset.update([1,4],[5,6])
print(oneset) # {'Taobao', 1, 3, 'Huawei', 4, 5, 6, 'Google'}
-
移除元素
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。\
oneset = set(("Google", "Huawei", "Taobao"))
oneset.remove("Taobao")
print(oneset) # {'Google', 'Huawei'}
oneset.remove("Facebook") # # 不存在会发生错误
# Traceback (most recent call last):
# File "F:/PycharmProject/pydemo/OSTest/set_test.py", line 25, in <module>
# oneset.remove("Facebook")
# KeyError: 'Facebook'
s.discard( x )
还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误
oneset = set(("Google", "Huawei", "Taobao"))
oneset.discard("Facebook") # 不存在不会发生错误
print(oneset) # {'Taobao', 'Huawei', 'Google'}
s.pop()
也可以设置随机删除集合中的一个元素
oneset = set(("Google", "Huawei", "Taobao"))
print(oneset.pop()) # Taobao
print(oneset) # {'Google', 'Huawei'}
多次执行测试结果都不一样。
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
-
计算集合元素个数
len(s)
计算集合 s 元素个数
oneset = set(("Google", "Huawei", "Taobao"))
print(len(oneset)) # 3
-
清空集合
s.clear()
清空集合 s
oneset = set(("Google", "Huawei", "Taobao"))
oneset.clear()
print(oneset) # set()
-
判断元素是否在集合中存在
x in s
判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False
oneset = set(("Google", "Huawei", "Taobao"))
print("Huawei" in oneset) # True
print("JD" in oneset) # False
- 其他操作
# 无法直接将多个列表转为集合
s = {[1,2,3],[4,6,7]} # TypeError: unhashable type: 'list'
s = set([1,2,3],[4,6,7]) # TypeError: unhashable type: 'list'
#可以通过set()来将序列和字典转换为集合
s = set([1,2,3,4,5,1,1,2,3,4,5]) # {1, 2, 3, 4, 5}
s = set('hello') # {'o', 'e', 'l', 'h'}
# 使用set()将字典转换为集合时,只会包含字典中的键
s = set({'a':1,'b':2,'c':3}) # {'a', 'b', 'c'}
# 使用in和not in来检查集合中的元素
s = {'a' , 'b' , 1 , 2 , 3 , 1}
print('c' in s) # False
浙公网安备 33010602011771号