2012-05-09 14 views

答えて

34

あなたの投稿方法は、SyntaxErrorです。
しかし、私はその文が[]の中にあると思います。それからそれはlist comprehensionで、100個の乱数を含むリストを作成します。それは、このコードと同等です:

whatever = [] 
for i in range(100): 
    whatever.append(randrange(10**10)) 

コードが()代わりの[]中にあった場合、それはgenerator expression、その項目即座に作成されますが、オンデマンドでされていない、すなわち反復可能になります。

+2

それは[]の中にあったので、リストの理解になると思います。 – KodeSeeker

25

単独では構文エラーです。括弧で囲まれ、それはgenerator expressionです:

(randrange(10**10) for i in range(100)) 

randrange(10**10)から100回の呼び出し、一度に一つの結果が得られますジェネレータを返します。角括弧内

、それはlist comprehensionです:

[randrange(10**10) for i in range(100)] 

randrange(10**10)それぞれの呼び出しから生じた100の番号のリストを返します。

ジェネレータ式の利点は、それが遅延評価されるため、リスト全体をメモリに保存する必要がないことです(特に、非常に大きな、おそらく無限のジェネレータに関係します)。

関連する問題