有序列表和集合插入操作的耗時差距
有個需求,需要插入不重複的數,忽略重複的數。下面插入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
- go操作redis的有序集合(zset)GoRedis
- php操作redis,有序集合zsetPHPRedis
- MongoDB 集合的插入、更新、刪除操作MongoDB
- Python&Redis 無序集合set、有序集合zset操作PythonRedis
- redis有序集合實現實時排名Redis
- redis有序集合Redis
- Redis 有序集合Redis
- Python元組、列表、集合及列表去重操作Python
- Redis有序集合命令Redis
- Redis有序集合物件Redis物件
- Redis有序集合原理Redis
- Redis的有序集合(sorted set)Redis
- HTML5中有序列表和無序列表的寫法HTML
- HTML <ol> 有序列表HTML
- Redis有序集合詳解Redis
- Redis物件——有序集合(ZSet)Redis物件
- Redis有序集合學習Redis
- Redis 有序集合(sorted set)Redis
- 【HTML】02有序無序列表HTML
- redis學習之有序集合Redis
- Redis雜湊與有序集合Redis
- 順序表有序插入資料
- 如何在耗時較長的操作完成後得到提醒?
- Redis 入門 - 3(集合 set、有序集合 sort set)Redis
- Python 列表、元組、字典及集合操作詳解Python
- PHP+Redis 有序集合實現 24 小時排行榜實時更新PHPRedis
- 《Redis實戰》筆記-Redis的有序集合Redis筆記
- Redis 有序集合(zset)命令詳解Redis
- 【Redis實戰】有序集合型別Redis型別
- redis有序集合型別sort setRedis型別
- Redis-Redis實戰(有序集合)Redis
- Python基礎-列表操作(2):列表的遍歷和數字列表Python
- Springboot:高併發下耗時操作的實現Spring Boot
- Redis命令介紹之有序集合的操作命令(第一部分)Redis
- 在 Django 中使用 Celery 來進行耗時操作Django
- ORACLE Temporary Tables臨時表更適合做插入和查詢操作Oracle
- Redis 資料庫之有序集合(zset)Redis資料庫