如何在Python中向后循环?
我正在谈论做类似的事情:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
range()
和xrange()
采用第三个参数来指定步骤。所以你可以执行以下操作。但是
对于迭代,您确实应该使用
xrange
来代替。所以,range()
andxrange()
take a third parameter that specifies a step. So you can do the following.Which gives
But for iteration, you should really be using
xrange
instead. So,这基本上适用于具有定义顺序的所有内容,包括 xrange 对象和列表。
This works on basically everything that has a defined order, including
xrange
objects and lists.如果输入是字符串,这三种解决方案都会给出相同的结果:
1.
2.
3.
All of these three solutions give the same results if the input is a string:
1.
2.
3.
要反转字符串而不使用
reversed
或[::-1]
,请尝试以下操作:To reverse a string without using
reversed
or[::-1]
, try something like: