【发布时间】:2014-12-05 04:35:37
【问题描述】:
如何将 c 风格的 for 循环转换为 python?
for (int i = m; i >= lowest; i--)
我想出的最好的是:
i = mid
for i in range(i, low,-1):
【问题讨论】:
如何将 c 风格的 for 循环转换为 python?
for (int i = m; i >= lowest; i--)
我想出的最好的是:
i = mid
for i in range(i, low,-1):
【问题讨论】:
for i in range(m, low - 1, -1):
请记住,range 不包括 stop 参数。
range(...)
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers
此代码与 C 代码之间的区别在于,在 Python 2 中,list 是由 range 在内存中构造的,因此对于非常大的范围,这可能是一个问题。将range 替换为xrange 不会在内存中构建列表并使代码几乎相同。在 Python 3 中,此问题不再存在。
【讨论】:
m 从哪里开始循环。
l 循环停止的地方,并且范围排除最后一项,所以l-1 和
-1 用于反向数组。
for i in range(m, l-1, -1):
【讨论】:
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 接受三个参数,一个开始、一个停止和每一步之间的增量。
【讨论】:
在可能的情况下,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=... 循环时,看看你是否可以改变它来直接作用于数据。 “用 Python 写 C” 对任何人来说都不好玩。
【讨论】: