1. 程式人生 > 實用技巧 >Python易錯點6

Python易錯點6

73. 集合常規操作

73.1

#set 運算子
a=set('abracadabra')
b=set('alacazam')


#集合a中包含而集合b中不包含的元素
print("a-b:",a-b)
# a-b: {'r', 'd', 'b'}

#集合不支援+
# print(a+b)
# TypeError: unsupported operand type(s) for +: 'set' and 'set'

# 集合a或b中包含的所有元素 並集
print("a|b:",a|b)
# a|b: {'d', 'b', 'r', 'm', 'l', 'c', 'a', 'z'}

# 集合a和b中都包含了的元素 交集
print("a&b:",a&b)
# a&b: {'c', 'a'}

# 不同時包含於a和b的元素   去掉交集
print("a^b:",a^b)
# a^b: {'r', 'l', 'd', 'b', 'm', 'z'}

print({1,2,3,4,5} ^ { 6,7})
# {1,2,3,4,5,6,7}
異或在數學上就是對稱差(Symmetric difference)

數學上,兩個集合的對稱差(Symmetric difference)是隻屬於其中一個集合,而不被兩個集合同時包含。 例如:集合{1,2,3}和{3,4}的對稱差為{1,2,4}。集合論中的這個運算相當於布林邏輯中的異或運算。所以在Python裡使用了異或的符號(^)表示,內建函式為symmetric_difference()

73.2 集合增刪

1.新增元素add和update

# 1.新增元素
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)

# 還有一個方法,也可以新增元素,且引數可以是列表,元組,字典等,語法格式如下:
thisset.update({1, 3})
thisset.update([1, 4], [5, 6])
thisset.update({'a': 'aaa'})
print(thisset)

  

2.移除元素
# s.remove( x )
# 將元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。

thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
# {'Google', 'Runoob'}
# thisset.remove("Facebook")   # 不存在會發生錯誤
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# KeyError: 'Facebook'

# 此外還有一個方法也是移除集合中的元素,且如果元素不存在,不會發生錯誤。格式如下所示:
# s.discard( x )

thisset = set(("Google", "Runoob", "Taobao"))
thisset.discard("Facebook")  # 不存在不會發生錯誤
print(thisset)

  執行結果:

{'Taobao', 'Google', 'Runoob'}