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

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

獲取以大列表開頭的第一個(gè)值的最有效方法

獲取以大列表開頭的第一個(gè)值的最有效方法

婷婷同學(xué)_ 2023-06-06 14:38:41
我有一個(gè)非常大的列表,其中包含超過 100M 的字符串。該列表的示例如下所示:l = ['1,1,5.8067',     '1,2,4.9700',     '2,2,3.9623',     '2,3,1.9438',     '2,7,1.0645',      '3,3,8.9331',     '3,5,2.6772',     '3,7,3.8107',     '3,9,7.1008']我想獲得以“3”開頭的第一個(gè)字符串。為此,我使用了一個(gè) lambda 迭代器,然后使用 next() 來獲取第一項(xiàng):next(filter(lambda i: i.startswith('3,'), l))Out[1]: '3,3,8.9331'考慮到列表的大小,不幸的是,對(duì)于我必須一遍又一遍地執(zhí)行的過程,此策略仍然需要相對(duì)較長(zhǎng)的時(shí)間。我想知道是否有人可以想出一種更快、更有效的方法。我對(duì)替代策略持開放態(tài)度。
查看完整描述

2 回答

?
九州編程

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

我自己無(wú)法測(cè)試它,但如果您將所有字符串與不在任何字符串中的字符連接起來,則有可能:

concat_list = '$'.join(l)

現(xiàn)在使用 simple .find('$3,'),它會(huì)更快。如果所有字符串都相對(duì)較短,則可能會(huì)發(fā)生這種情況。從現(xiàn)在開始,所有字符串都在內(nèi)存中的一個(gè)位置。


如果文本中唯一字母的數(shù)量很少,您可以使用Abrahamson-Kosaraju實(shí)際的方法和時(shí)間復(fù)雜度O(n)


另一種方法是使用 joblib,當(dāng)?shù)谝粋€(gè)線程正在檢查時(shí)創(chuàng)建n線程,當(dāng)一個(gè)線程找到模式時(shí)它會(huì)停止其他線程。所以時(shí)間復(fù)雜度為。ii + k * nO(naive algorithm / n)


查看完整回答
反對(duì) 回復(fù) 2023-06-06
?
HUX布斯

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

301由于您的實(shí)際字符串在按制表符拆分字符串后由相對(duì)較短的標(biāo)記(例如 )組成,因此您可以構(gòu)建一個(gè)字典,將第一個(gè)標(biāo)記的每個(gè)可能長(zhǎng)度作為鍵,以便后續(xù)查找平均時(shí)間僅需O ( 1)復(fù)雜。


用相反順序的列表值構(gòu)建字典,以便列表中以每個(gè)不同字符開頭的第一個(gè)值將保留在最終字典中:


d = {s[:i + 1]: s for s in reversed(l) for i in range(len(s.split('\t')[0]))}

所以給出:


l = ['301\t301\t51.806763\n', '301\t302\t46.970094\n',

     '301\t303\t39.962393\n', '301\t304\t18.943836\n',

     '301\t305\t11.064584\n', '301\t306\t4.751911\n']

d['3']會(huì)回來的'301\t301\t51.806763'。


如果您只需要測(cè)試每個(gè)第一個(gè)標(biāo)記作為一個(gè)整體,而不是前綴,您可以簡(jiǎn)單地將第一個(gè)標(biāo)記作為鍵:


d = {s.split('\t')[0]: s for s in reversed(l)}

這樣d['301']就會(huì)返回'301\t301\t51.806763'。


查看完整回答
反對(duì) 回復(fù) 2023-06-06
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報(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)