fromrandomimportrandrangefromtimeitimport*
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 查詢操作時間複雜度lognlist是線性表 查詢時間複雜度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,它並不是為快速隨機訪問設計的...