【问题标题】:Steps for "for loop" in pythonpython中“for循环”的步骤
【发布时间】:2015-10-25 15:09:13
【问题描述】:

我想根据循环中发生的变化来改变“for循环”的步骤。例如:

for i in np.arange(0,l00):
     i=i*10

在提到的代码循环中运行 100 次,而我希望 i*10 对循环产生影响并且它运行 10 次!你能指导我吗?

其实这只是一个简单的例子,但主要问题是在循环中改变步骤。像这样的……

data = pd.read_csv('/home/Desktop/dataset.txt')    
for i in np.arange(0,l00):
     if data[i,0]==5:
         i=i*5
     elif data[i,0]==10:
         i=i*10
     else:
         i=i*20

【问题讨论】:

  • data[i,0]==5 有用吗!!!!!

标签: python numpy import


【解决方案1】:

RTFM numpy.arange,是第三个参数:

numpy.arange([start, ]stop, [step, ]dtype=None)

参数:

开始:数字,可选

间隔开始。间隔包括此值。默认起始值​​为 0。

停止:数字

间隔结束。间隔不包括这个值,除非在某些情况下步长不是整数并且浮点四舍五入会影响 out 的长度。

步骤:数字,可选

值之间的间距。对于任何输出输出,这是两个相邻值之间的距离,out[i+1] - out[i]。默认步长为1。如果指定了step,还必须给出start。

【讨论】:

    【解决方案2】:

    这可以使用while-if-break 循环来完成:

    你的:

    for i in np.arange(0,l00):
         i=i*10
    

    应该是:

    i = 0
    while True:
        if i > 100:
           break
        i = i + 10
    

    还有:

    data = pd.read_csv('/home/Desktop/dataset.txt')    
    for i in np.arange(0,l00):
         if data[i,0]==5:
             i=i*5
         elif data[i,0]==10:
             i=i*10
         else:
             i=i*20
    

    应该是:

    data = pd.read_csv('/home/Desktop/dataset.txt')  
    i = 0
    while True:
        if i > 100:
           break
    
        if data[i, 0] == 5:
            i = i + 5
        elif data[i, 0] == 10:
            i = i + 10
        else:
            i = i + 20
    

    【讨论】:

      【解决方案3】:

      numpy 的 arange 的替代品,你可以使用 python 的 xrange 来实现你正在寻找的东西:

      for i in xrange(0,100,10):
        print(i)
      

      【讨论】:

        【解决方案4】:

        你可以用numpay.arange()点赞numpy.arange([start, ]stop, [step, ]dtype=None):(详情点链接)

        >>>np.arange(0,100,10)
        array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
        

        这里有更多例子:

        >>> np.arange(3)
        array([0, 1, 2])
        >>> np.arange(3.0)
        array([ 0.,  1.,  2.])
        >>> np.arange(3,7)
        array([3, 4, 5, 6])
        >>> np.arange(3,7,2)
        array([3, 5])
        

        【讨论】:

          【解决方案5】:

          你可以使用python的扩展切片功能。

          extendign slice function = f (L[start:stop:step]):
          
          myArray = np.arange(0,l00)
          
          increment = 10   // You an set the value of increment by if condition.
          for i in myArray[0:0:increment]:
               print i
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-19
            • 2013-04-19
            • 2013-07-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-10
            相关资源
            最近更新 更多