python set集合(資料結構)

2021-08-09 09:20:28 字數 1384 閱讀 6367

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...