set
(集合)是乙個非常有用的資料結構。它與列表(list
)的行為類似,區別在於set
不能包含重複的值。
這在很多情況下非常有用。例如你可能想檢查列表中是否包含重複的元素,你有兩個選擇,第乙個需要使用for
迴圈,就像這樣:
some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n']
duplicates =
for value in some_list:
if some_list.count(value) > 1:
if value not
in duplicates:
print(duplicates)
### 輸出: ['b', 'n']
但還有一種更簡單更優雅的解決方案,那就是使用集合(sets)
,你直接這樣做:
some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n']
duplicates = set([x for x in some_list if some_list.count(x) > 1])
print(duplicates)
### 輸出: set(['b', 'n'])
集合還有一些其它方法,下面我們介紹其中一部分。
你可以對比兩個集合的交集(兩個集合中都有的資料),如下:
valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.intersection(valid))
### 輸出: set(['red'])
你可以用差集(difference)找出無效的資料,相當於用乙個集合減去另乙個集合的資料,例如:
valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.difference(valid))
### 輸出: set(['brown'])
你也可以用符號來建立集合,如:
a_set =
print(type(a_set))
### 輸出:
集合還有一些其它方法,我會建議訪問官方文件並做個快速閱讀。 redis有序集合資料結構
zset資料結構類似於set結構,只是zset結構中,每個元素都會有乙個分值,然後所有元素按照分值的大小進行排列,相當於是乙個進行了排序的鍊錶。如果zset是乙個鍊錶,而且內部元素是有序的,在進行元素插入和刪除,以及查詢的時候,就必須要遍歷鍊錶才行,時間複雜度就達到了o n 這個在以單執行緒處理的r...
資料結構 集合
陣列 陣列長度在初始化的時候就已經固定,不適合物件數量未知的情況。下圖為collection 於的部落格 下圖為map 於網路 1.介紹一下list比較常用的集合 有序,值允許重複 1 arraylist 底層實現 private static final object defaultcapacit...
資料結構 集合
乙個識別符號 集合set 可以儲存多個資料,資料不能重複。集合與陣列的區別,集合的內容具有唯一性 全等匹配 宣告集合 let f70 newset f71 集合賦值 let f71 let f70 newset f71 集合賦值 f70.add 1 f70 add 2 f70.add 1 f70 a...