set本身是一個集合的意思。
根據數學關於集合的定義可知,set裡面的數據不能是重復的。
實例:檢查列表中包含重復的元素。
# 用for循環檢索出不重復的元素/數據
inputs = ['red', 'red', 'blue', 'yellow', 'yellow', 'green', 'orange', 'yellow', 'purple']
outputs = []
for item in inputs:
if inputs.count(item) > 1:
if item not in outputs:
outputs.append(item)
else:
pass
else:
pass
print(outputs)
輸出結果是:
['red', 'yellow']
可見,用循環的方法檢查列表中重復元素比較麻煩。
當采用set數據結構時候,會簡潔一些。
# 采用set數據結構,簡單一些
inputs = ['red', 'red', 'blue', 'yellow', 'yellow', 'green', 'orange', 'yellow', 'purple']
outputs = set([x for x in inputs if inputs.count(x) > 1])
# 列表裡面逐個遍歷inputs列表中重復的x值,因此列表裡面是重復的,可以用set去掉重復
print(outputs)
輸出結果是:
{
'red', 'yellow'}
set數據結構也和數學上的集合類似,也有交集和差集操作。
交集:兩個集合中都有的數據。
差集:⽤⼀個集合減去另⼀個集合的數據。
# set交集操作
inputs = ['red', 'red', 'blue', 'yellow', 'yellow', 'green', 'orange', 'yellow', 'purple']
inputs_also = ['yellow', 'brown']
# 首先要把list數據結構轉換成set數據結構
inputs = set(inputs)
inputs_also = set(inputs_also)
print(inputs.intersection(inputs_also))
輸出結果是:
{
'yellow'}
可見,set.intersection()方法查找交集。
# set差集操作
inputs = ['red', 'red', 'blue', 'yellow', 'yellow', 'green', 'orange', 'yellow', 'purple']
inputs_also = ['yellow', 'brown']
# 首先要把list數據結構轉換成set數據結構
inputs = set(inputs)
inputs_also = set(inputs_also)
print(inputs.difference(inputs_also))
可見,set.difference()方法查找差集。
set的創建:既可以用list創建,再用set()轉換成set實例;也可以直接用花括號創建。
# set創建
set_instance = {
'a', 15, 13.69, False}
print(type(set_instance))
輸出結果是:
<class 'set'>