2016-08-30 12 views
-5

このPythonコードは何を意味していますか? Pythonを初めて使う人。 THX!このPythonコードは何を意味していますか?

benchmark_sets_list = [ 
    '%s: %s' % 
    (set_name, benchmark_sets.BENCHMARK_SETS[set_name]['message']) 
    for set_name in benchmark_sets.BENCHMARK_SETS] 
+0

もっと文脈を提供してください。 – DeA

+0

は、誰かが知りません、どのようにPythonでプログラミングするのですか – Daniel

+0

あなたはどのように知っていますか?:) – MartinGGWW

答えて

1

この部分...

for set_name in benchmark_sets.BENCHMARK_SETS 

が... benchmark_sets.BENCHMARK_SETSからセット名をつかむだろうし、それがset_name変数に一つずつそれらを維持します。その後

set_nameが値を持つことになりますので、... ...

(set_name, benchmark_sets.BENCHMARK_SETS[set_name]['message']) 

この行から値を知ることができるようになります。その部分は2つのもの、set_namebenchmark_sets.BENCHMARK_SETS[set_name]['message']を返します。おそらくその2つのものは両方の文字列になります。

はその後、あなたがこの行に表示さ%sたものは...

'%s: %s' % 

は...それぞれset_namebenchmark_sets.BENCHMARK_SETS[set_name]['message']の値に置き換えられます。これは、このような文字列を生成します: "foo:bar"、 "foo"の値がset_name、 "bar"の値がbenchmark_sets.BENCHMARK_SETS[set_name]['message']です。

あなたがそこに何が起こったかを理解するためには、これは簡単な例です:、

"%s %s %s" % (first_elem, second_elem, third_elem)

コードがsecond_elemの値でfirst_elem%sの値を持つ最初の%sに置き換えられます第3の%sの値はthird_elemです。

最後に、その文字列が構築されているリストに追加されます。最終的には、これとほぼ同じようなリストが表示されます:

["foo: bar", "wop: wap", "bing: bang"] 
+0

このような詳細のためにヴィセンテに感謝します!今分かります。 実際に私の質問は、どのようにパイソンの人は、リスト(または配列)に値を代入する "クール"な方法ですか? チュートリアルのリンクを教えてください。 従来の方法では、常にfor()またはwhile()ループがあります。 – MartinGGWW

+0

これは「リストの理解」と呼ばれ、次の構文を持っています。 'L = [連続する変数の式]'。あなたの例では、 "式"は%s:%s "%(...)'部分です。そして、 'set_name for whatever'の部分も持っています。私はあなたのサンプルコードをその構文とマッチさせることができると確信しています:-)あなたはGoogleに "python list comprehension"について話すことができ、チュートリアルや例が見つかります。 –

+0

大変!どうもありがとうございます!それはまさに私が知りたいことです。 私はちょうど徹底的に勉強する時間は、Pythonコードにジャンプします。それはほとんどの部分のために読むことができます。これは例外です。 – MartinGGWW

関連する問題