Mar*_*sov 0 python yield generator
我有这个代码:
def generator(n):
list_of = range(1,n+1)
for i in list_of:
if i % 7 == 0:
yield i
print generator(100)
Run Code Online (Sandbox Code Playgroud)
这应该打印给定范围内可被整除的所有数字7,但输出却是<generator object generator at 0x1004ad280>.
此外,yield我的文本编辑器(KOD)中的单词不会像所有保留字一样以天蓝色突出显示,而是以白色显示,是不是很好?
Mar*_*ers 10
你的发电机工作.你忘了迭代它了:
for elem in generator(100):
print elem
Run Code Online (Sandbox Code Playgroud)
或者你可以把它变成一个列表:
print list(generator(100))
Run Code Online (Sandbox Code Playgroud)
您改为通过调用生成器函数来打印生成的生成器对象.发电机功能产生悬挂的发电机.只有当你迭代它时才会执行代码(直到下一个yield).
演示:
>>> def generator(n):
... list_of = range(1,n+1)
... for i in list_of:
... if i % 7 == 0:
... yield i
...
>>> print list(generator(100))
[7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]
Run Code Online (Sandbox Code Playgroud)
该list()调用迭代给定的参数,生成一个Python列表对象,其中包含由参数产生的所有元素.非常适合迭代生成器以引入它生成的所有元素.
至于KOD; 这位编辑多年来没有见过更新; 你可能想切换到别的东西.正如2年前的KOD推特订阅:
不要等我,我有点像僵尸.去获取Sublime Text @sublimehq,这很棒:http://www.sublimetext.com
我同意; Sublime Text是我目前的首选编辑.