python中for i in range(0, 3.0 , 0.1)为啥错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中for i in range(0, 3.0 , 0.1)为啥错?相关的知识,希望对你有一定的参考价值。

如果想要输出公差为0.1的等差数列呢?

    
python中的浮点数range方法
  我们知道python中有个range函数用来产生一个范围内的数字数组,但是浮点数没有,我们来定义一个
                              
                                    #python中的range函数支持步进,如下:
>>> print range(2,15,3)
[2, 5, 8, 11, 14]

#但是浮点数不支持range函数,自己定义一个类似的
def floatrange(start,stop,steps):
    ''' Computes a range of floating value.
       
        Input:
            start (float)  : Start value.
            end   (float)  : End value
            steps (integer): Number of values
       
        Output:
            A list of floats
       
        Example:
            >>> print floatrange(0.25, 1.3, 5)
            [0.25, 0.51249999999999996, 0.77500000000000002, 1.0375000000000001, 1.3]
    '''
    return [start+float(i)*(stop-start)/(float(steps)-1) for i in range(steps)]

#运行范例:
>>> print floatrange(0.25, 1.3, 5)
[0.25, 0.51249999999999996, 0.77500000000000002, 1.0375000000000001, 1.3]

参考技术A range函数用来产生一个范围内的整数数组,输入浮点数会出错。
一个办法是自己写一个函数,参考http://www.sharejs.com/codes/python/1866;
另一个是引用numpy模块的arange函数:
>>> from numpy import arange
>>> arange(0.5, 5, 1.5)
array([0.5, 2.0, 3.5])
参考技术B

此路不通,加一行代码就行:

for i in range(0, 30):
    i = i / 10.0  #此时的i值和你想要的一个样

列表中使用嵌套for循环[i*j for i in range for j in range]

  利用嵌套for循环形成一个新列表

  [i*j for i in range(3) for j in range(3)]相当于如下代码

li=[]
for i in range(3):
    for j in range(3):
        print(i*j)
        li.append(i*j)
print(li)

  结果和[i*j for i in range(3) for j in range(3)]的结果一样都是:

[0, 0, 0, 0, 1, 2, 0, 2, 4]

  以上就是利用嵌套for循环形成一个新列表是怎么形成的

 

以上是关于python中for i in range(0, 3.0 , 0.1)为啥错?的主要内容,如果未能解决你的问题,请参考以下文章

python中的for i in range怎么用?

python中range循环的用法 for i in range()括号中能跟几种形式 有路过的大

python中的for i in range怎么用

django模块不能用for i in range(0, 5)总报错

列表中使用嵌套for循环[i*j for i in range for j in range]

python中的for i in range怎么用