sna*_*ile 160 python iteration range
我在谈论做类似的事情:
for(i=n; i>=1; --i) {
//do something with i
}
Run Code Online (Sandbox Code Playgroud)
我可以想一些在python中这样做的方法(创建一个列表range(1,n+1)
并反转它,使用while
和--i
,...)但是我想知道是否有更优雅的方法来做到这一点.在那儿?
编辑:有人建议我使用xrange()而不是range(),因为range返回一个列表,而xrange返回一个迭代器.但是在Python 3(我碰巧使用)中,range()返回一个迭代器而xrange不存在.
Chi*_*chi 252
range()
并xrange()
采用指定步骤的第三个参数.所以你可以做到以下几点.
range(10, 0, -1)
Run Code Online (Sandbox Code Playgroud)
这使
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
但是对于迭代,你应该真正使用xrange
.所以,
xrange(10, 0, -1)
Run Code Online (Sandbox Code Playgroud)
注意Python 3的用户:没有单独
range
和xrange
在Python 3功能外,还有就是range
,它遵循的Python 2的设计xrange
.
hab*_*bit 122
for x in reversed(whatever):
do_something()
Run Code Online (Sandbox Code Playgroud)
这基本上适用于具有已定义顺序的所有内容,包括xrange
对象和列表.
def reverse(text):
reversed = ''
for i in range(len(text)-1, -1, -1):
reversed += text[i]
return reversed
print("reverse({}): {}".format("abcd", reverse("abcd")))
Run Code Online (Sandbox Code Playgroud)
小智 6
如果输入是一个字符串,则所有这三个解决方案都会给出相同的结果:
1.
def reverse(text):
result = ""
for i in range(len(text),0,-1):
result += text[i-1]
return (result)
Run Code Online (Sandbox Code Playgroud)
2.
text[::-1]
Run Code Online (Sandbox Code Playgroud)
3.
"".join(reversed(text))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
289619 次 |
最近记录: |