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
posted @ 2021-02-24 17:36  ToMonster  阅读(77)  评论(0)    收藏  举报