2017-02-14 4 views
-1

オンラインでbook.2nd行の例を読むとPythonを学ぶのに問題があります。例えば一般的なpython言語の学習方法:data = {i:range(7)のiのrandn()}

from numpy.random import randn 
data = {i : randn() for i in range(7)} 

私はそれをjupyter上で実行しても結果は得られますが、それがどのように動作するかはまだ分かりません。このコードを理解するための私の提案と、Pythonの実行方法をどうすればいいのですか?

+1

これは、関連するチュートリアルをオンラインで見つけるのに役立つ場合は、「辞書の理解」です。 – roganjosh

+1

これは、基本的に、「包括的な範囲[0,6]の各* i *について、辞書の* i *の対応する値が乱数である」と基本的に言います。キー:値のマッピングは「i:乱数」です... – blacksite

+0

なぜ分かりませんか?ソースとターゲットは同じで、より多くの 'temp'値を使用します。 'data = {}'と 'data = {generator_object}'は同じです! – dsgdfg

答えて

1

Dict Comprehension(PEP 274)とその基本的にはList Comprehension(PEP 202)のフォローアップです。それのRationaleは次のとおりです。

リストの内包表記は、マップ() 状況でリストを作成し、(フィルタリングするより簡潔な方法を提供)、および/またはネストされたループ 現在使用されます。

あなたのコード:

data = {i : randn() for i in range(7)} 

はとして読み取ることができます:

data = {} 
for i in range(7): 
    data[i] = randn() 

しかし、これは慣用的な選択、あなただけの第二の例から想定することができないものでした。それを何かのコンテナを作るより速い方法と考えてください。 Pythonを今学び始めているなら、共通のループと構文から始めてください。そしてそれらの概念を理解するとSyntactic Sugarのものにジャンプできます。

関連する問題