2011-07-22 76 views
-4
def isLower(ch): 
    return ch in string.lowercase 

def isLower(ch): 
    return 'a' <= ch <= 'z' 

def isLower(ch): 
    return string.find(string.lowercase, ch) != -1 

下一個isLower的哪個版本是 最快?除了速度之外,還有其他什麼原因可以選擇其中一個或 另一個呢?python中字符串的字符分類

+1

爲什麼不自己來計算它們呢? –

+5

看看'timeit'模塊。你可以運行你自己的基準。另外,你想弄清楚什麼?它有一個小寫字符?如果有任何字符是小寫字母?如果所有字符都是小寫? –

+0

使用timeit模塊,您可以*知道哪一個更快。此外,它可能取決於特定情況,您可以指定該內容,以及哪些內容適用於哪些內容,但它也很大程度上取決於我建議您添加的上下文以獲得更好的質量答案。 – Trufa

回答

12

str(和unicode)已經有一個islower方法,它也適用於多字符字符串。 unicode版本也正確地處理unicode字符,不像你嘗試使用ASCII(對於很多應用程序是大寫字母),對於所有其他字符,強制執行此限制沒有任何理由,因爲更通用的版本需要甚至更​​少的代碼,因爲它是內置的)。

還要注意的是string模塊主要是過時的,它的許多功能已被取代str方法 - 例如,string.findstr.find方法所取代。如果我沒有記錯的話,s1.find(s2) != -1應該等於s2 in s1