【问题标题】:Python xrange with float [duplicate]带有浮点数的Python xrange [重复]
【发布时间】:2015-04-02 02:45:50
【问题描述】:

这里是初级程序员。

有没有办法在 xrange 的范围内使用浮点值以及步长值?我已经看到了一些使用浮点数步进的解决方案,但没有看到实际的边界。

基本上我想创建一个这样的循环:

for x in xrange(5.5,0,0.1):
     print x

我正在考虑确定我的两个边界之间的差异,将其除以步长值以确定所需的步数,然后将其作为整数值输入 xrange 函数 - 但有没有更简单的方法?

谢谢!

【问题讨论】:

  • 您总是可以只使用生成器。如果您愿意,可以将其分配为 lambda。

标签: python loops floating-point xrange


【解决方案1】:

range 需要整数参数。但是你可以这样做:

for x in xrange(55,0,-1): print x*1.0/10

【讨论】:

  • 对于 Python 2.x 版本的 Python 应该是 x/10.
【解决方案2】:

您可以使用yield 为浮点数定义自己的“xrange”。因为没有内置函数可以做到这一点。

>>> def frange(start, stop, step):
...     x = start
...     while x < stop:
...         yield x
...         x += step

那你就可以做

>>>for x in frange(5.5,0,0.1):
...    print x

【讨论】:

  • 我见过这个,但我还不了解生成器。不过,从我的 this 会输出一个数组,对吗?
  • @micuzzo nope,每个循环中的frange 将在添加step 后返回下一个浮点数。从start 开始到stop 浮动。所以,yield 就像一个 return 语句,没有停止函数调用。
  • 感谢您在定义函数和在其他地方调用它之间建立联系,我仍然处于相当初级的水平。这么说, frange 的定义是否需要与调用它的位置在同一个文件中? @levi
  • @micuzzo 这是你的选择,你可以在一个模块中定义它并从其他地方导入它,或者只是在同一个文件中定义它。
猜你喜欢
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多