假设这个 for 循环在C/C++
:
int start_value = 10;
int end_value = 20;
for(int i=start_value;i<end_value;i++)
cout << i;
如果start_value
大于end_value
循环将不会迭代。如何在“Python”中写同样的东西?
在 python 3.x 中
start_value = 10;
end_value = 20;
for i in range(start_value, end_value):
print(i)
在 python 2.x 中
start_value = 10;
end_value = 20;
for i in xrange(start_value, end_value):
print i
您可以使用以下range()
功能:
start_value = 10
end_value = 20
for i in range(start_value, end_value):
print i # Or print(i) in Python 3
range(10, 20)
返回:
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
请注意,如果您使用的是 python 3,range()
将返回一个迭代器(但是输出仍然相同)。这也可以在 python 2 中通过使用xrange()
. 它主要用于性能优势。
在python中,循环结束时不需要做i += 1
,因为for循环会在循环之后自动转到列表中的下一项。
>>> start_value = 10;
>>> end_value = 20;
>>>
>>> for i in xrange(start_value, end_value):
... print i,
...
10 11 12 13 14 15 16 17 18 19
>>>
>>> start_value = 21;
>>>
>>> for i in xrange(start_value, end_value):
... print i,
...
>>>
习惯上,从 C/C++ 到 Python 2 的翻译将正确地遵循如下:
start_value = 10
end_value = 20
for i in range(start_value, end_value):
print i
语义上虽然它与 C/C++ for 循环有点不同。Pythonfor
循环是编程中通常所说的for each循环。
For each(或 foreach)是一种用于遍历集合中项目的计算机语言习语。
这些在 Python 中支持遍历的集合称为iterables。
然而,与其他 for 循环结构不同的是,foreach 循环通常不维护明确的计数器:它们本质上说“对这个集合中的所有内容执行此操作”,而不是“执行此操作 x 次”。
与许多其他类型的循环(例如 while 循环)不同,for 循环通常通过显式循环计数器来区分。
所以range
orxrange
内置函数可以在 Python for 循环中使用来模拟循环计数器的效果。
这实际上更接近 C/C++ 示例的语义:
start_value = 10
end_value = 20
i = start_value
while i < end_value:
print i
i += 1
将类似的东西翻译for (int i=1; stopCondition(i); i++)
成 Python 并不那么直接,需要一个if
语句和break
.
这将是 Python for 循环示例使用range
.
start_value = 10
end_value = 20
iterable = range(start_value, end_value)
iterator = iter(iterable)
while True:
try:
i = iterator.next()
print i
except StopIteration:
break