如何在Python中反向循环?
我想做的事情是这样的:
for(i=n; i>=1; --i) {
//do something with i
}
我能想到一些在Python中实现这个的办法,比如创建一个从1到n的列表(用range(1,n+1)
),然后把它反转,或者用while
循环和--i
来实现等等。不过我在想有没有更优雅的方法呢?
补充说明: 有人建议我用xrange()代替range(),因为range()会返回一个列表,而xrange()返回的是一个迭代器。但在我使用的Python 3中,range()已经返回一个迭代器,而xrange()这个函数不存在了。
5 个回答
22
这三种解决方案如果输入的是字符串,结果都是一样的:
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))
261
for x in reversed(whatever):
do_something()
这个方法基本上适用于所有有明确顺序的东西,包括 xrange
对象和列表。
457
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 中,没有单独的
range
和xrange
函数,只有一个range
,它的设计跟 Python 2 的xrange
是一样的。