我得到一个简单的打印语句错误,可能是错误,已更改为浮动并尝试但仍然存在错误.
if __name__ == '__main__':
print (i*i for i in range(5))
Run Code Online (Sandbox Code Playgroud)
错误:
<generator object <genexpr> at 0x0000000002731828>
Run Code Online (Sandbox Code Playgroud)
提前致谢...
在Python 3中,print()是一个函数,而不是一个语句.
生成器表达式类似于列表推导,除了它创建一个在迭代它时产生结果的对象,而不是在创建它时.例如,
[i*i for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
产生一个列表,[0,1,4,9,16],而
(i*i for i in range(5))
Run Code Online (Sandbox Code Playgroud)
生成一个生成器对象,当您迭代它时将生成这些数字.
如果给一个函数只有一个参数并且它是一个生成器表达式,你可以省略生成器表达式周围的括号,所以你不必做myfunc((i + 1代表i)).
因此,您要创建一个生成器对象,并将其传递给print()函数,该函数将打印其表示形式.它正是你所要求的,而不是你要求的.
您可以从生成器表达式初始化列表:
print(list(i*i for i in range(5)))
Run Code Online (Sandbox Code Playgroud)
但是使用列表理解更容易:
print([i*i for i in range(5)])
Run Code Online (Sandbox Code Playgroud)
您可以如何使用生成器对象的简单示例是:
for value in (i * i for i in range(5)):
print value
Run Code Online (Sandbox Code Playgroud)
虽然在这个简单的例子中,显然更容易编写:
for i in range(5):
print i * i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10739 次 |
| 最近记录: |