代码之家  ›  专栏  ›  技术社区  ›  Gal

在Python中减少for循环是不可能的?

  •  72
  • Gal  · 技术社区  · 15 年前

    我可能错了(告诉我,我会删除这个问题),但python似乎不会回应

    for n in range(6,0):
        print n
    

    我试过用xrange,但也没用。我该如何实现?

    6 回复  |  直到 15 年前
        1
  •  191
  •   Steve Tjoa    15 年前
    for n in range(6,0,-1):
        print n
    # prints [6, 5, 4, 3, 2, 1]
    
        2
  •  40
  •   pratikm    14 年前

    现在已经很晚了,但我只想补充一点,有一种更优雅的方法:使用 reversed

    for i in reversed(range(10)):
        print i
    

    给予:

    4
    3
    2
    1
    0
    
        3
  •  11
  •   Handy Jodana    13 年前
    for n in range(6,0,-1)
    

    这会给你 6,5,4,3,2,1

    至于

    for n in reversed(range(0,6))
    

    会给你 5,4,3,2,1,0

        4
  •  3
  •   cji    15 年前
    for n in range(6,0,-1):
        print n
    
        5
  •  2
  •   vanza    15 年前
    >>> range(6, 0, -1)
    [6, 5, 4, 3, 2, 1]
    
        6
  •  2
  •   Neo    11 年前

    0是条件值当此条件为真时,循环将继续执行。10是初始值。1是可以是简单减量的修饰符。

    for number in reversed(range(0,10,1)):
    print number;
    
        7
  •  0
  •   Mark Moretto    6 年前

    晚到派对,但对于任何负责创建自己的或想了解其工作原理的人,以下是一个附加功能,可以根据所需的增量重新排列开始-停止值:

    def RANGE(start, stop=None, increment=1):
        if stop is None:
            stop = start
            start = 1
    
        value_list = sorted([start, stop])
    
        if increment == 0:
            print('Error! Please enter nonzero increment value!')
        else:
            value_list = sorted([start, stop])
            if increment < 0:
                start = value_list[1]
                stop = value_list[0]
                while start >= stop:
                    worker = start
                    start += increment
                    yield worker
            else:
                start = value_list[0]
                stop = value_list[1]
                while start < stop:
                    worker = start
                    start += increment
                    yield worker
    

    负增量:

    for i in RANGE(1, 10, -1):
        print(i)
    

    或者,当起止点颠倒时:

    for i in RANGE(10, 1, -1):
        print(i)
    

    输出:

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

    常规增量:

    for i in RANGE(1, 10):
        print(i)
    

    输出:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    零增量:

    for i in RANGE(1, 10, 0):
        print(i)
    

    输出:

    'Error! Please enter nonzero increment value!'