不可能减少Python中的循环?

Gal*_*Gal 83 python loops for-loop

我可能是错的(只是让我知道,我将删除这个问题)但似乎python不会回应

for n in range(6,0):
    print n
Run Code Online (Sandbox Code Playgroud)

我尝试使用xrange,它也没用.我该如何实现呢?

Ste*_*joa 191

for n in range(6,0,-1):
    print n
# prints [6, 5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

  • Betcha OP实际上想要`range(5,-1,-1)`.虽然他可能会从反复试验中找出答案. (14认同)

pra*_*km 40

这已经很晚了,但我只是想补充说有一种更优雅的方式:使用 reversed

for i in reversed(range(10)):
    print i
Run Code Online (Sandbox Code Playgroud)

得到:

4
3
2
1
0
Run Code Online (Sandbox Code Playgroud)

  • @alexis它不需要任何费用.由于CPython中内置了很好的[`range_reverse`](https://github.com/python-git/python/blob/master/Objects/rangeobject.c#L151)优化,你可以免费获得"反转(范围)" .我做了一些快速的基准测试,并且在Python 2.7和3.3中找不到`step = -1`和`reversed()`之间的显着成本差异.另请注意[这个成语用于heapq](http://hg.python.org/cpython/file/3.3/Lib/heapq.py#l179). (5认同)
  • 我的意思是,它立即清楚地表明正在做什么 (3认同)
  • `reversed(range(10))` 不可能输出 `4` 到 `0`。也许你的意思是“范围(5)”? (3认同)
  • 这有什么优雅的?您花时间反转列表而不是按照您想要的方式生成它。 (2认同)

小智 11

for n in range(6,0,-1)
Run Code Online (Sandbox Code Playgroud)

这会给你 6,5,4,3,2,1

至于

for n in reversed(range(0,6))
Run Code Online (Sandbox Code Playgroud)

会给你的 5,4,3,2,1,0