是来自 python 的 for/while 循环是一个生成器
is for/while loop from python is a generator
在一次采访中,面试官问我Python中使用的一些发电机。我知道生成器就像一个函数,它 yield
值而不是 return
.
有人告诉我 for
/while
循环是生成器的一个例子。
while
和 for
本身都不是生成器或迭代器。它们是执行迭代的控制结构。当然,您可以使用 for
或 while
来迭代生成器生成的项目,并且可以使用 for
或 while
在生成器的代码中执行迭代.但这些事实都不能成为 for
或 while
生成器。
简答:没有,但还有其他形式的生成器。
一个for
/while
循环是一个循环结构:它不发出值,因此不是发电机。
不过,还有其他构造生成器的方法。
你用 yield
举例是一个生成器:
def some_generator(xs):
for x in xs:
if x:
yield x
但是也有生成器表达式,比如:
(x for x in xs if x)
此外,在 python-3.x 中,range(..)
、map(..)
、filter(..)
结构也是生成器。
当然你可以创建一个可迭代(通过使用可迭代模式) :
class some_generator(object):
def __init__(self, xs):
self.n = n
self.idx = 0
def __iter__(self):
return self
def __next__(self):
return self.next()
def next(self):
while self.num < len(self.xs) and not self.xs[self.num]:
self.num += 1
if self.num < len(self.xs):
res = self.xs[self.num]
self.num += 1
return res
else:
raise StopIteration()
the python wiki for generators中的第一行:
Generators functions allow you to declare a function that behaves like an iterator, i.e. it can be used in a for loop.
所以在你采访的背景下,我相信他们正在寻找你来回答有关创建可迭代对象的问题。
In Python this is controlled instead by generating the appropriate sequence.
所以你可能会学究气,但一般来说,for 循环不是生成器。
for 和 while 是循环结构,您可以使用它们来迭代生成器。您可以通过将生成器转换为列表来获取生成器的某些元素。
在一次采访中,面试官问我Python中使用的一些发电机。我知道生成器就像一个函数,它 yield
值而不是 return
.
有人告诉我 for
/while
循环是生成器的一个例子。
while
和 for
本身都不是生成器或迭代器。它们是执行迭代的控制结构。当然,您可以使用 for
或 while
来迭代生成器生成的项目,并且可以使用 for
或 while
在生成器的代码中执行迭代.但这些事实都不能成为 for
或 while
生成器。
简答:没有,但还有其他形式的生成器。
一个for
/while
循环是一个循环结构:它不发出值,因此不是发电机。
不过,还有其他构造生成器的方法。
你用 yield
举例是一个生成器:
def some_generator(xs):
for x in xs:
if x:
yield x
但是也有生成器表达式,比如:
(x for x in xs if x)
此外,在 python-3.x 中,range(..)
、map(..)
、filter(..)
结构也是生成器。
当然你可以创建一个可迭代(通过使用可迭代模式) :
class some_generator(object):
def __init__(self, xs):
self.n = n
self.idx = 0
def __iter__(self):
return self
def __next__(self):
return self.next()
def next(self):
while self.num < len(self.xs) and not self.xs[self.num]:
self.num += 1
if self.num < len(self.xs):
res = self.xs[self.num]
self.num += 1
return res
else:
raise StopIteration()
the python wiki for generators中的第一行:
Generators functions allow you to declare a function that behaves like an iterator, i.e. it can be used in a for loop.
所以在你采访的背景下,我相信他们正在寻找你来回答有关创建可迭代对象的问题。
In Python this is controlled instead by generating the appropriate sequence.
所以你可能会学究气,但一般来说,for 循环不是生成器。
for 和 while 是循环结构,您可以使用它们来迭代生成器。您可以通过将生成器转换为列表来获取生成器的某些元素。