【发布时间】:2011-05-10 12:56:54
【问题描述】:
The documentation 基本上说range 的行为必须与此实现完全相同(对于积极的step):
def range(start, stop, step):
x = start
while True:
if x >= stop: return
yield x
x += step
它还说它的参数必须是整数。这是为什么?如果 step 是浮点数,这个定义不是也完全有效吗?
就我而言,我是 esp。需要一个接受浮点类型作为其step 参数的range 函数。 Python中有没有,还是我需要自己实现?
更具体:我如何以一种很好的方式将这段 C 代码直接翻译成 Python(即,不只是通过 while-loop 手动完成):
for(float x = 0; x < 10; x += 0.5f) { /* ... */ }
【问题讨论】:
-
循环中不能有
return和yield关键字,请使用break。 -
看起来可以!我不认为这是可能的.. 我确信当我尝试类似的事情时已经引发了错误
-
以您发布的代码示例为例,将其重命名为
float_range- 完成。 -
@Tim:
return变为raise StopIteration;return <expression>得到SyntaxError: 'return' with argument inside generator——即使是return None。 -
其实
range()返回的是一个列表。 OP描述的其实是xrange(),每次返回一个元素。