を使用して範囲内の数値の平方権限のリストを作成し、私は発電機を使用してコードのこの部分を書き換えるしたいと思います:発電
basic = []
for x in range(0,11):
basic.append(x**2)
はどうすればこれを行うことができますか?試しました:
basic.append(x**2 for x in range(0,11))
x**2
部分に構文エラーが発生しました。
を使用して範囲内の数値の平方権限のリストを作成し、私は発電機を使用してコードのこの部分を書き換えるしたいと思います:発電
basic = []
for x in range(0,11):
basic.append(x**2)
はどうすればこれを行うことができますか?試しました:
basic.append(x**2 for x in range(0,11))
x**2
部分に構文エラーが発生しました。
あなたは、リストの内包表記を使用したほうが良いと思います:
basic = [x*x for x in range(11)]
+1レコードの場合、これは少なくとも概念的には実装の違いにより、これは 'list(x * x for range(11)in) 'と同じです)。 – delnan
あなたは間違っています。あなたは発電機を使用する必要がある場合
>>> basic = []
>>> basic.append(x**2 for x in range(0,11))
>>> basic
[<generator object <genexpr> at 0x01E9AD78>]
>>>
:あなたのコードは、それだけで間違ったことをして、構文エラーを生成しません
>>> basic = list(x**2 for x in range(0,11))
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>
それはリストの内包表記を使用するように簡単です:
>>> basic = [x**2 for x in range(0,11)]
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>
>>> (x**2 for x in xrange(0,11))
<generator object <genexpr> at 0xb7387734>
または
>>> def gen():
... for x in xrange(0,11):
... yield x**2
...
>>> gen
<function gen at 0xb738a0d4>
>>> gen()
<generator object gen at 0xb7387734>
>>>
しかし、それは実際に質問に答えるわけではありません。 – delnan
なぜですか?それはジェネレータを使って書かれたコードの彼の部分です。 – virhilo
OPはジェネレータの作成に問題ありません。彼はリストを組み立てる際に問題があります。 – SilentGhost
使用extend
ではなく、append
です。
>>> basic=[]
>>> basic.extend(x**2 for x in range(11))
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
:あなたがここに貼り付け
>>> basic = [x**2 for x in range(11)]
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
コードは、構文エラーは発生しません。 (反復子が出すアイテムからリストを作成するのではなく、怠惰なイテレータを追加します) – delnan