对于Python中的(不是foreach)循环

时间:2014-02-08 00:02:39

标签: python

我需要制作一个简单的python脚本,但由于我主要使用PHP / C ++,因此我发现很难在没有简单for循环的情况下管理自己。 假设我有一个代码:

for(int i = 0; i < some_string_length; i++)
{
//do something...
}

正如你所看到的,它只是我字符串中的字母数量的多少。当然,我可以在while循环中执行此操作,但这有一个问题。我必须在循环外部创建一个变量,使其成为全局变量或在循环中创建它,但是这个变量的值不能在循环的参数中使用。

错:

while(i < some_string_length)
{
i = something; //declaring i for the first time
i++;
}

正如你所看到的那样根本没有意义。那我怎么能这样做呢?

5 个答案:

答案 0 :(得分:8)

其他语言的构造

for (int i = start; i < stop; i += step) { … }

直接转换为range上的Python for循环:

for i in range(start, stop, step):
    …

默认情况下,step为1,因此您无需为i++指定它。 start默认为零,因此如果您从i = 0开始,也可以将其保留为:

for i in range(stop): # the same as `for (int i = 0; i < stop; i++)`
    …

所以,如果你想在一个字符串的长度上迭代i,你可以这样做:

for i in range(len(my_string)):
    …

通常,您可能希望访问该字符串的字符,因此您可以直接迭代字符:

for char in my_string:
    …

或者,如果您确实需要索引,则可以使用enumerate来获取两者:

for i, char in enumerate(my_string):
    …

答案 1 :(得分:5)

for i, item in enumerate(some_string):
    # i is the index, item is the actual element

我认为你很少会感到惊讶,你实际上很少需要i。你最好学习如何使用Python习语,而不是强迫自己用Python编写PHP / C ++代码。

答案 2 :(得分:1)

尝试:

for i in range(0,some_string_length):
    # do something...

答案 3 :(得分:0)

我想你想使用range函数

for x in range(0, 3):
    print "x: %d" (x)

https://wiki.python.org/moin/ForLoop

答案 4 :(得分:0)

如果您有string s

s = "some string"

你可以这样做:

for i in range(len(s)):
    print i