2017-08-29 13 views
-1

次のスクリプトでは、 "keys ="コード行を理解しようとしています。このスクリプトは、以下にリンクされている答えに含まれています。私はそのセクションにコメントするだけですが、コメントするのに十分なポイントがありません。Python: "Key for Key"を理解する

Search Multiple Strings (from File) in a file and print the line

私は「キーのキーが」何であるかについてのドキュメントを見つけるのに苦労しています。私が見つけたものから、それは辞書の一部ですが、その部分を理解する助けがあれば大いに感謝します。ありがとう!

keyfile = "keys.txt" 
testfile = "test.txt" 

keys = [key for key in (line.strip() for line in open(keyfile)) if key] 

with open(testfile) as f: 
for line in f: 
    for key in keys: 
     if key in line: 
      print(line, end='') 
      break 

答えて

0

key for keyは、x for xとなるため、変数としてのキーには、inキーワードの後に​​続く要素の値が入ります。行全体とは、要素が空でない改行(ストリップ)のないすべての要素(ファイルからの行)のリストです。

0
keys = [key for key in (line.strip() for line in open(keyfile)) if key] 

内一つが行毎にファイルを読み取り、スペース&改行を除去する(ジェネレータ理解をネスト)リスト内包

呼ばれます。

その内側の1の外側の1の繰り返し処理は、それが空でない場合にのみ値を発行します。それをまとめると

インナー発電の理解は、実際のリストを作成していないので、それは時に反復するときにその値が評価され、非常に効率的に、ファイルの非空行のリストを作成します。