使用生成器创建范围内数字的平方幂列表

mar*_*s34 5 python generator range

我想用生成器重写这部分代码:

basic = []
for x in range(0,11):
    basic.append(x**2)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?试过:

basic.append(x**2 for x in range(0,11))
Run Code Online (Sandbox Code Playgroud)

但它x**2部分引发了语法错误.

Sil*_*ost 16

你最好使用列表理解:

basic = [x*x for x in range(11)]
Run Code Online (Sandbox Code Playgroud)


Joh*_*hin 8

你误会了; 你的代码不会产生语法错误,它只是做错了:

>>> basic = []
>>> basic.append(x**2 for x in range(0,11))
>>> basic
[<generator object <genexpr> at 0x01E9AD78>]
>>>
Run Code Online (Sandbox Code Playgroud)

如果必须使用发电机:

>>> basic = list(x**2 for x in range(0,11))
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>
Run Code Online (Sandbox Code Playgroud)

使用列表理解更简单:

>>> basic = [x**2 for x in range(0,11)]
>>> basic
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>
Run Code Online (Sandbox Code Playgroud)