有序列表和集合插入操作的耗時差距
有個需求,需要插入不重複的數,忽略重複的數。下面插入10000個數。
1.用集合
import bisect as bi
import time as tm
set_a=set()
sortlst_a=[]
def ins_set(n):
for i in range(n,1,-2):
set_a.add(i)
return len(set_a)
2.用有序列表
def ins_lst(n):
for i in range(n,1,-2):
if bi.bisect_right(sortlst_a,i)==bi.bisect_left(sortlst_a,i):bi.insort(sortlst_a,i)
return len(sortlst_a)
t=tm.time();set_a=set();print(ins_set(2*10**5),tm.time()-t)
t=tm.time();sortlst_a=[];print(ins_lst(2*10**5),tm.time()-t)
結果
>>> t=tm.time();set_a=set();print(ins_set(2*10**5),tm.time()-t)
100000 0.031199932098388672
>>> t=tm.time();sortlst_a=[];print(ins_lst(2*10**5),tm.time()-t)
100000 4.2900073528289795
差距有點大,不過,比起每次插入前,對列表sort然後append,bitsec還是算快的。
def ins_lst3(n):
for i in range(n,1,-2):
sortlst_a.sort()
if bi.bisect_right(sortlst_a,i)==bi.bisect_left(sortlst_a,i):sortlst_a.append(i)
return len(sortlst_a)
>>> t=tm.time();sortlst_a=[];print(ins_lst3(10**5),tm.time()-t)
50000 43.414876222610474
相關文章
- Redis有序集合操作Redis
- php操作redis,有序集合zsetPHPRedis
- Python&Redis 無序集合set、有序集合zset操作PythonRedis
- Python元組、列表、集合及列表去重操作Python
- redis有序集合實現實時排名Redis
- redis有序集合Redis
- 列表和字典的操作
- HTML5中有序列表和無序列表的寫法HTML
- Redis有序集合原理Redis
- Redis有序集合物件Redis物件
- Redis有序集合命令Redis
- Python 列表、元組、字典及集合操作詳解Python
- HTML <ol> 有序列表HTML
- Springboot:高併發下耗時操作的實現Spring Boot
- Redis有序集合詳解Redis
- Redis有序集合學習Redis
- Redis物件——有序集合(ZSet)Redis物件
- CAD和實時渲染之間的差距
- Python基礎-列表操作(2):列表的遍歷和數字列表Python
- 如何在耗時較長的操作完成後得到提醒?
- 順序表有序插入資料
- 【HTML】02有序無序列表HTML
- Redis雜湊與有序集合Redis
- redis學習之有序集合Redis
- 集合與列表
- 05-Python—列表、元祖、字典、集合操作大全:建議收藏Python
- 《Redis實戰》筆記-Redis的有序集合Redis筆記
- PHP+Redis 有序集合實現 24 小時排行榜實時更新PHPRedis
- Redis命令介紹之有序集合的操作命令(第一部分)Redis
- Redis 有序集合(zset)命令詳解Redis
- 【Redis實戰】有序集合型別Redis型別
- 使用Redis的有序集合實現排行榜功能Redis
- python中的列表操作Python
- 04 - Mongdb的集合操作
- 使用CSS計數器美化有序列表CSS
- redis 有序集合(sorted set)(redis學習七)Redis
- C++統計資源消耗和耗時C++
- python資料型別-列表建立和操作Python資料型別