python雙重for循環(huán)太慢 python循環(huán)內(nèi)要處理大量數(shù)據(jù)時(shí)怎么優(yōu)化?
python循環(huán)內(nèi)要處理大量數(shù)據(jù)時(shí)怎么優(yōu)化?先嘗試優(yōu)化程序的時(shí)間復(fù)雜度,找到更有效的算法在保證算法復(fù)雜度在可接受范圍內(nèi)后,開始不斷優(yōu)化。下面是一些Python優(yōu)化的技巧:實(shí)際測(cè)量表明for語句通常比w
python循環(huán)內(nèi)要處理大量數(shù)據(jù)時(shí)怎么優(yōu)化?
先嘗試優(yōu)化程序的時(shí)間復(fù)雜度,找到更有效的算法
在保證算法復(fù)雜度在可接受范圍內(nèi)后,開始不斷優(yōu)化。下面是一些Python優(yōu)化的技巧:
實(shí)際測(cè)量表明for語句通常比while語句更有效
同樣,實(shí)際測(cè)量表明xrange通常比range更有效
如果要存儲(chǔ)動(dòng)態(tài)數(shù)據(jù)(也就是說,它是可能的),測(cè)量表明兩個(gè)str的連接效率是從高到低=,join,
多個(gè)str的連接效率是從高到低=,join,
,
嘗試使用列表解析表達(dá)式和生成器表達(dá)式而不是循環(huán)來構(gòu)建列表
]避免使用全局關(guān)鍵字,不管是從代碼效率還是可移植性的角度來看
第一個(gè)問題是您使用for in,所以您的列表沒有序列號(hào),所以您無法判斷第一個(gè)元素。當(dāng)你像這樣遍歷這個(gè)范圍(len(list)),為什么不使用for in。。
有關(guān)python中for循環(huán)和列表的兩個(gè)問題?
這個(gè)答案適用于蟒蛇3。Xpython本身,這確實(shí)是相對(duì)緩慢的。但相對(duì)而言,python的編寫方式比directfor循環(huán)更快。例如,循環(huán)的標(biāo)準(zhǔn)編寫如下:對(duì)于范圍(10000)中的I:I**2,速度較慢,而標(biāo)準(zhǔn)編寫的嵌套循環(huán)速度較慢。它可以重寫為一個(gè)列表推理:[I**2 for I in range(10000)],這比direct for loop的標(biāo)準(zhǔn)編寫方法快得多。此外,它還可以使用Python的高級(jí)函數(shù)映射來執(zhí)行自動(dòng)并行計(jì)算。它也可以寫成列表(map(lambda I:I**2,range(10000)))。map函數(shù)幾乎和list推理一樣快。
python如何提高for循環(huán)效率?
外環(huán)控制輸出線的數(shù)量,內(nèi)環(huán)控制輸出線的數(shù)量為1,因此前五行可以使用兩個(gè)for-loop輸出,后四行可以使用兩個(gè)for-loop輸出!