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

如何在python中向后循环?[复制品]

  •  145
  • snakile  · 技术社区  · 14 年前

    这个问题已经有了答案:

    我说的是做一些类似的事情:

    for(i=n; i>=1; --i) {
       //do something with i
    }
    

    我可以在python中考虑一些这样做的方法(创建一个 range(1,n+1) 然后反转,使用 while --i 但是我想知道是否有一种更优雅的方式。有?

    编辑: 有些人建议我使用xrange()而不是range(),因为range返回一个列表,而xrange返回一个迭代器。但在python 3(我碰巧使用)中,range()返回迭代器,xrange不存在。

    5 回复  |  直到 6 年前
        1
  •  224
  •   ShadowRanger    6 年前

    range() xrange() 采用第三个指定步骤的参数。因此,您可以执行以下操作。

    range(10, 0, -1)
    

    给出

    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 
    

    但是对于迭代,您应该真正使用 xrange 相反。所以,

    xrange(10, 0, -1)
    

    Python3用户注意:没有单独的 range 润智 在python 3中,只有 范围 ,它遵循了Python2的设计 润智 .

        2
  •  96
  •   habnabit dwc    14 年前
    for x in reversed(whatever):
        do_something()
    

    这基本上适用于所有具有定义顺序的内容,包括 xrange 对象和列表。

        3
  •  5
  •   Laurel keremk    8 年前

    如果输入是字符串,则这三个解决方案的结果都相同:

    1。

    def reverse(text):
        result = ""
        for i in range(len(text),0,-1):
            result += text[i-1]
        return (result)
    

    2。

    text[::-1]
    

    三。

    "".join(reversed(text))
    
        4
  •  2
  •   Michael Qin    8 年前
    def reverse(text):
        reversed = ''
        for i in range(len(text)-1, -1, -1):
            reversed += text[i]
        return reversed
    
    print("reverse({}): {}".format("abcd", reverse("abcd")))
    
        5
  •  1
  •   alex.hunter    10 年前

    在不使用的情况下反转字符串 reversed [::-1] ,尝试如下操作:

    def reverse(text):
        # Container for reversed string
        txet=""
    
        # store the length of the string to be reversed
        # account for indexes starting at 0
        length = len(text)-1
    
        # loop through the string in reverse and append each character
        # deprecate the length index
        while length>=0:
            txet += "%s"%text[length]
            length-=1
        return txet