def func(l):
for i in l:
yield i
l=[i for i in range(1,100)]
p=func(l)
print(list(p))
print(list(p))
k=list(func(l)).copy() #solution to problem
print(k)
print(k)
>>> def createGenerator():
... mylist = range(3)
... for i in mylist:
... yield i*i
...
>>> mygenerator = createGenerator() # create a generator
>>> print(mygenerator) # mygenerator is an object!
<generator object createGenerator at 0xb7555c34>
>>> for i in mygenerator:
... print(i)
0
1
4
首先,您应该看看pep255(https://www.python.org/dev/peps/pep-0255/)
只能迭代一次的集合是生成器。生成器会导致
StopIteration
,一旦它没有任何剩余项,这实际上就是一个例外。大多数时候(基本上总是)您不关心StopIteration异常,因为它是由您的迭代方法处理的你正在使用生成函数,这就是为什么你会得到这种类型的结果
如果要存储函数/api输出,只需执行
copy()
操作例如
以上是问题的示例
它不是一个API,而是一个称为“生成器”的编程功能,在Python中,它被称为
yield
从What does the "yield" keyword do?
yield
是一个与return类似的关键字,但函数将返回一个生成器这是一个没用的例子,但是当你知道你的函数将返回一个巨大的值集,你只需要读一次,它就很方便了。 要掌握yield,必须了解调用函数时,函数体中编写的代码不会运行。函数只返回generator对象,这有点棘手:-)
最初的答案是e-satis
相关问题 更多 >
编程相关推荐