第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python集與列表

Python集與列表

侃侃爾雅 2019-09-19 16:23:50
在Python中,哪種數(shù)據(jù)結(jié)構(gòu)更有效/更快?假設(shè)順序?qū)ξ襾碚f并不重要,無論如何我會檢查重復(fù)項,Python設(shè)置是否比Python列表慢?
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

這取決于你打算用它做什么。


在確定對象是否存在于集合中時(如在x in s)中,集合明顯更快,但在迭代其內(nèi)容時比列表慢。


您可以使用timeit模塊查看哪種情況更快。


查看完整回答
反對 回復(fù) 2019-09-19
?
達令說

TA貢獻1821條經(jīng)驗 獲得超6個贊

當您只想迭代值時,列表比設(shè)置略快。


但是,如果要檢查項目是否包含在內(nèi),則集合明顯快于列表。但它們只能包含唯一的項目。


事實證明,元組的表現(xiàn)幾乎與列表完全相同,除了它們的不變性。


迭代


>>> def iter_test(iterable):

...     for i in iterable:

...         pass

...

>>> from timeit import timeit

>>> timeit(

...     "iter_test(iterable)",

...     setup="from __main__ import iter_test; iterable = set(range(10000))",

...     number=100000)

12.666952133178711

>>> timeit(

...     "iter_test(iterable)",

...     setup="from __main__ import iter_test; iterable = list(range(10000))",

...     number=100000)

9.917098999023438

>>> timeit(

...     "iter_test(iterable)",

...     setup="from __main__ import iter_test; iterable = tuple(range(10000))",

...     number=100000)

9.865639209747314

確定對象是否存在


>>> def in_test(iterable):

...     for i in range(1000):

...         if i in iterable:

...             pass

...

>>> from timeit import timeit

>>> timeit(

...     "in_test(iterable)",

...     setup="from __main__ import in_test; iterable = set(range(1000))",

...     number=10000)

0.5591847896575928

>>> timeit(

...     "in_test(iterable)",

...     setup="from __main__ import in_test; iterable = list(range(1000))",

...     number=10000)

50.18339991569519

>>> timeit(

...     "in_test(iterable)",

...     setup="from __main__ import in_test; iterable = tuple(range(1000))",

...     number=10000)

51.597304821014404


查看完整回答
反對 回復(fù) 2019-09-19
?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

清單表現(xiàn):


>>> import timeit

>>> timeit.timeit(stmt='10**6 in a', setup='a = range(10**6)', number=100000)

0.008128150348026608

設(shè)定表現(xiàn):


>>> timeit.timeit(stmt='10**6 in a', setup='a = set(range(10**6))', number=100000)

0.005674857488571661

您可能需要考慮元組,因為它們與列表類似但無法修改。它們占用的內(nèi)存略少,訪問速度更快。它們不像列表那樣靈活,但效率更高。它們的正常用途是作為字典鍵。


集合也是序列結(jié)構(gòu),但與列表和元組有兩個不同。雖然集合確實有訂單,但該順序是任意的,不受程序員的控制。第二個區(qū)別是集合中的元素必須是唯一的。


set根據(jù)定義。[ python | 維基 ]。


>>> x = set([1, 1, 2, 2, 3, 3])

>>> x

{1, 2, 3}


查看完整回答
反對 回復(fù) 2019-09-19
  • 3 回答
  • 0 關(guān)注
  • 641 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號