如何将c-style for循环转换为python?
for (int i = m; i >= lowest; i--)
我想出的最好的是:
i = mid
for i in range(i, low,-1):
答案 0 :(得分:5)
for i in range(m, low - 1, -1):
请注意range
不包含stop
参数。
range(...)
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers
此代码与C代码之间的区别在于,在2
中,list
正在range
内存中构建range
,因此对于非常大的范围,这可能是个问题。用xrange
替换3
不会在内存中构建列表并使代码几乎相同。在Python {{1}}中,此问题不再存在。
答案 1 :(得分:1)
m
。
l
循环停止,范围排除最后一项l-1
和
-1
。
for i in range(m, l-1, -1):
答案 2 :(得分:0)
m = 20
low = 10
for i in range(m, low - 1, -1):
print i
这会按预期倒计时:
20
19
18
17
16
15
14
13
12
11
10
range
有三个参数,一个开始,一个停止以及每个步骤之间的增量。
答案 3 :(得分:0)
在可能的情况下,Python习惯用法是直接遍历项目,而不是计算它们。因此,倒计时的惯用方法是for item in reversed(list): print item
或采取反向切片>>> someList[m:lowest-1:-1]
如果你在循环项目并且还需要一个计数器,那么Python有enumerate()
在循环时生成计数索引号。 for index, value in enumerate(someList):
这并不总是可以做到这一点,有时候你在计算并且没有超过除数字之外的任何其他数据,并且range()
很好 - 正如其他答案所暗示的那样。但是当你有一个for (int i=...
循环时,看看你是否可以改变它以直接对数据采取行动。写“C in Python”对任何人来说都不好玩。