如何在Python中向后循环?

发布于 2024-09-14 17:00:17 字数 367 浏览 7 评论 0原文

我正在谈论做类似的事情:

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

我可以想出一些在 python 中这样做的方法(创建 range(1,n+1) 列表并使用 while< /code> 和 --i,...)但我想知道是否有更优雅的方法来做到这一点。有没有?

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

I'm talking about doing something like:

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

I can think of some ways to do so in python (creating a list of range(1,n+1) and reverse it, using while and --i, ...) but I wondered if there's a more elegant way to do it. Is there?

EDIT:
Some suggested I use xrange() instead of range() since range returns a list while xrange returns an iterator. But in Python 3 (which I happen to use) range() returns an iterator and xrange doesn't exist.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

何以畏孤独 2024-09-21 17:00:17

range()xrange() 采用第三个参数来指定步骤。所以你可以执行以下操作。

range(10, 0, -1)

但是

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

对于迭代,您确实应该使用 xrange 来代替。所以,

xrange(10, 0, -1)

Python 3 用户注意:Python 3 中没有单独的 rangexrange 函数,只有 range,它遵循Python 2 的 xrange 的设计。

range() and xrange() take a third parameter that specifies a step. So you can do the following.

range(10, 0, -1)

Which gives

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

But for iteration, you should really be using xrange instead. So,

xrange(10, 0, -1)

Note for Python 3 users: There are no separate range and xrange functions in Python 3, there is just range, which follows the design of Python 2's xrange.

狂之美人 2024-09-21 17:00:17
for x in reversed(whatever):
    do_something()

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

for x in reversed(whatever):
    do_something()

This works on basically everything that has a defined order, including xrange objects and lists.

执手闯天涯 2024-09-21 17:00:17

如果输入是字符串,这三种解决方案都会给出相同的结果:

1.

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

2.

text[::-1]

3.

"".join(reversed(text))

All of these three solutions give the same results if the input is a string:

1.

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

2.

text[::-1]

3.

"".join(reversed(text))
や三分注定 2024-09-21 17:00:17
def reverse(text):
    reversed = ''
    for i in range(len(text)-1, -1, -1):
        reversed += text[i]
    return reversed

print("reverse({}): {}".format("abcd", reverse("abcd")))
def reverse(text):
    reversed = ''
    for i in range(len(text)-1, -1, -1):
        reversed += text[i]
    return reversed

print("reverse({}): {}".format("abcd", reverse("abcd")))
意犹 2024-09-21 17:00:17

要反转字符串而不使用 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

To reverse a string without using reversed or [::-1], try something like:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文