這裏有兩個函數可以完全相同,但是有誰知道爲什麼使用count()
方法的方法比另一個方法快得多? (我的意思是它的工作原理又是如何構建?)爲什麼count()方法比for循環python更快
如果可能的話,我想比一個更容易理解的答案怎麼在這裏找到:Algorithm used to implement the Python str.count function 或什麼的源代碼:https://hg.python.org/cpython/file/tip/Objects/stringlib/fastsearch.h
def scoring1(seq):
score = 0
for i in range(len(seq)):
if seq[i] == '0':
score += 1
return score
def scoring2(seq):
score = 0
score = seq.count('0')
return score
seq = 'AATTGGCCGGGGAG0CTTC0CTCC000TTTCCCCGGAAA'
# takes 1min15 when applied to 100 sequences larger than 100 000 characters
score1 = scoring1(seq)
# takes 10 sec when applied to 100 sequences larger than 100 000 characters
score2 = scoring2(seq)
非常感謝您的回覆
簡短的回答是因爲一羣非常聰明的人從python發佈以來一直在優化內建'count()'功能 –
你試過這個電腦嗎?我的顯然是比你快100-200倍。另外,爲什麼unpythonic索引循環?你**試圖讓它變慢嗎? –
[用於實現Python str.count函數的算法]的可能重複(http://stackoverflow.com/questions/16806972/algorithm-used-to-implement-the-python-str-count-function) –