2016-11-19 7 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'、数値、' tuple'、 'frozenset'、' str'、 'bytes'、あなたは何を持っていますか)は、同じ変更可能なオブジェクトへの参照がたくさんあります。あなたが望むものはほとんどありません(変更すると、すべてが変更されます)。 – ShadowRanger

答えて

0

[False for _ in range(128)]は、128 Falseのリストを返すリスト内包です。つまり、char_set[False, False, ...]となり、128 Falseとなります。 _は、range()関数で作成された値ですが、プログラムは何もする必要はありません。この場合、_0,1という関数の反復を表す数値です、2など)

関連する問題