python中list和set查詢

2021-08-21 11:16:20 字數 1185 閱讀 4815

fromrandomimportrandrange

fromtimeitimport*

importsys

l = [randrange(1000)foriinrange(100)]

print(sys.getsizeof(l))

s = set(l)

print(sys.getsizeof(s))

defchecklisttime():

foriinrange(0

, 5000000):

ifiinl:

passdefchecksettime():

foriinrange(0

, 5000000):

ifiins:

passlisttime = timeit("checklisttime()"

, "from __main__ import checklisttime"

, number=1)

settime = timeit("checksettime()"

, "from __main__ import checksettime"

, number=1)

print(listtime)

print(settime)

從結果來看:set查詢由於list查詢,但是set消耗的記憶體空間大於list的資料的記憶體空間。
set用的是bst 查詢操作時間複雜度logn

list是線性表 查詢時間複雜度n

執行結果如下:

8416

8.554053954

0.4606272709999999

python中set和list的坑。。。

我之前一直傻傻的認為 set 的作用就是把list中的東西單純的變換了格式 將 變成了 其實不然,它去掉了list中的重複元素。python 的set型別和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素。如果我們要處理一些資料,需要去除掉重複元素,比如列表a 5,2,5,1...

集合中List和Set

collection介面有兩個子介面 list 列表 set 集 list 可存放重複元素,元素訪問是有序的。set 不可以存放重複元素,元素訪問是無序 的list集合中常用的類 vector 執行緒安全,但速度慢,已被 arraylist 替代。arraylist 執行緒不安全,查詢速度快。lin...

java中set和list的區別

set和list都是集合介面 簡要說明 set 其中的值不允許重複,無序的資料結構 list 其中的值允許重複,因為其為有序的資料結構 list的功能方法 實際上有兩種list 一種是基本的arraylist,其優點在於隨機訪問元素,另一種是更強大的linkedlist,它並不是為快速隨機訪問設計的...