【问题标题】:Converting C style for loop to python将 C 样式 for 循环转换为 python
【发布时间】: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):

【问题讨论】:

    标签: python for-loop idioms


    【解决方案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 中,此问题不再存在。

    【讨论】:

      【解决方案2】:

      m 从哪里开始循环。

      l 循环停止的地方,并且范围排除最后一项,所以l-1

      -1 用于反向数组。

      for i in range(m, l-1, -1):
      

      【讨论】:

        【解决方案3】:
        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 接受三个参数,一个开始、一个停止和每一步之间的增量。

        【讨论】:

          【解决方案4】:

          在可能的情况下,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” 对任何人来说都不好玩。

          【讨论】:

            猜你喜欢
            • 2012-10-13
            • 2021-12-16
            • 2021-10-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多