在使用Django voting包时,当我在shell中使用get_top()方法时,它返回类似于“生成器对象(位于0x022f7AD0)的内容,我以前从未见过这样的内容,如何访问它以及它是什么?
我的代码:
v=Vote.objects.get_top(myModel, limit=10, reversed=False)
print v
<generator object at 0x022f7AD0>
注意:我想get_top只会返回一个很好的myModel列表,我可以这样做,比如v.name等等
Tags:
生成器是一种迭代器。迭代器是一种iterable对象,和其他iterable一样
可以使用for循环遍历每个项:
如果需要按索引访问项,可以将其转换为列表:
但是,您只能在迭代器的特定实例上迭代一次(与更一般的可迭代对象(如列表)不同):
有关创建自己的生成器的详细信息,请参见http://docs.python.org/tutorial/classes.html#generators
嗯哼
我读过this和this,现在一切都很清楚了
实际上,我可以通过执行以下操作将生成器转换为列表
如果需要列表,只需在生成器对象上调用list()。
python中的生成器对象类似于惰性列表。元素只有在迭代之后才被计算。(因此上面的调用列表会计算所有这些值。)
例如,您可以执行以下操作:
只在迭代f时查看如何计算f。你可以在这里找到关于这个主题的优秀材料:http://www.dabeaz.com/generators/
如果需要列表,只需在生成器对象上调用list()。
python中的生成器对象类似于惰性列表。元素只有在您迭代它们时才被计算。(因此上面的调用列表会计算所有这些值。)
例如,您可以执行以下操作:
只在迭代f时查看如何计算f。你可以在这里找到关于这个主题的优秀材料:http://www.dabeaz.com/generators/
相关问题 更多 >
编程相关推荐