将C样式for循环转换为python

时间:2014-12-05 04:35:37

标签: python for-loop idioms idiomatic

如何将c-style for循环转换为python?

for (int i = m; i >= lowest; i--)

我想出的最好的是:

i = mid
for i in range(i, low,-1):

4 个答案:

答案 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”对任何人来说都不好玩。