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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Python中,從列表中刪除重復(fù)項(xiàng)以使所有元素在保留順序時(shí)都是唯一的最快的算法是什么?

在Python中,從列表中刪除重復(fù)項(xiàng)以使所有元素在保留順序時(shí)都是唯一的最快的算法是什么?

冉冉說 2019-11-12 13:11:13
例如:>>> x = [1, 1, 2, 'a', 'a', 3]>>> unique(x)[1, 2, 'a', 3]假設(shè)列表元素是可哈希的。澄清:結(jié)果應(yīng)保留列表中的第一個(gè)重復(fù)項(xiàng)。例如,[1、2、3、2、3、1]變?yōu)閇1、2、3]。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

def unique(items):

    found = set([])

    keep = []


    for item in items:

        if item not in found:

            found.add(item)

            keep.append(item)


    return keep


print unique([1, 1, 2, 'a', 'a', 3])


查看完整回答
反對(duì) 回復(fù) 2019-11-12
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

使用方法:


lst = [8, 8, 9, 9, 7, 15, 15, 2, 20, 13, 2, 24, 6, 11, 7, 12, 4, 10, 18, 13, 23, 11, 3, 11, 12, 10, 4, 5, 4, 22, 6, 3, 19, 14, 21, 11, 1, 5, 14, 8, 0, 1, 16, 5, 10, 13, 17, 1, 16, 17, 12, 6, 10, 0, 3, 9, 9, 3, 7, 7, 6, 6, 7, 5, 14, 18, 12, 19, 2, 8, 9, 0, 8, 4, 5]

并使用timeit模塊:


$ python -m timeit -s 'import uniquetest' 'uniquetest.etchasketch(uniquetest.lst)'

依此類推,對(duì)于其他各種功能(我以其發(fā)布者的名字命名),我得到了以下結(jié)果(在我的第一代Intel MacBook Pro上):


Allen:                  14.6 μs per loop [1]

Terhorst:               26.6 μs per loop

Tarle:                  44.7 μs per loop

ctcherry:               44.8 μs per loop

Etchasketch 1 (short):  64.6 μs per loop

Schinckel:              65.0 μs per loop

Etchasketch 2:          71.6 μs per loop

Little:                 89.4 μs per loop

Tyler:                 179.0 μs per loop

[1]請(qǐng)注意,艾倫(Allen)修改了列表–我認(rèn)為這會(huì)浪費(fèi)時(shí)間,因?yàn)樵搕imeit模塊運(yùn)行代碼100000次,其中99999個(gè)使用的是非重復(fù)列表。


摘要:具有集合的直接實(shí)現(xiàn)勝過令人困惑的一線:-)


查看完整回答
反對(duì) 回復(fù) 2019-11-12
?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是迄今為止最快的解決方案(對(duì)于以下輸入):


def del_dups(seq):

    seen = {}

    pos = 0

    for item in seq:

        if item not in seen:

            seen[item] = True

            seq[pos] = item

            pos += 1

    del seq[pos:]


lst = [8, 8, 9, 9, 7, 15, 15, 2, 20, 13, 2, 24, 6, 11, 7, 12, 4, 10, 18, 

       13, 23, 11, 3, 11, 12, 10, 4, 5, 4, 22, 6, 3, 19, 14, 21, 11, 1, 

       5, 14, 8, 0, 1, 16, 5, 10, 13, 17, 1, 16, 17, 12, 6, 10, 0, 3, 9, 

       9, 3, 7, 7, 6, 6, 7, 5, 14, 18, 12, 19, 2, 8, 9, 0, 8, 4, 5]

del_dups(lst)

print(lst)

# -> [8, 9, 7, 15, 2, 20, 13, 24, 6, 11, 12, 4, 10, 18, 23, 3, 5, 22, 19, 14, 

#     21, 1, 0, 16, 17]

字典查找比Python 3中的字典查找要快一些。


查看完整回答
反對(duì) 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 1219 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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