2016-11-19 76 views
0
char_set = [False for _ in range(128)] 
    for char in string: 
     val = ord(char) 
     if char_set[val]: 
      # Char already found in string 
      return False 
     char_set[val] = True 

我試圖破譯這段代碼,但不明白char_set在做什麼?列表中的部分令人困惑。在Python列表中做什麼功能?

+0

注意:當初始化多個相同不可變對象的'list'多次時,執行'char_set = [False] * 128'會更快/更簡單。 _immutable_對象的列表('bool',numerics,'tuple','frozenset','str','bytes',你有什麼),不要爲可變對象做這件事,因爲你最終會一堆對同一個可變對象的引用,這很少是你想要的(改變其中的一個)。 – ShadowRanger

回答

0

[False for _ in range(128)]是一個列表理解,將返回一列128 False s。換句話說,char_set將是[False, False, ...]與128 False_表示一次性值(由range()函數創建的值,但程序不需要執行任何操作,在這種情況下,_是代表range()函數的迭代次數的數字(即0,12等)