与柜台

可能重复:
在Python中访问循环的索引

我想知道:Python有类似的东西吗?

for (i=0; i < length; i += 1){ .... }

当然,我可能会说

i = 0
for item in items:
 #.....
 i += 1

但我认为应该有类似于for(i = 0;...) ,不是吗?


使用enumerate()函数:

for i, item in enumerate(items):
     print i, item

或使用range()

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

(在python 2上,你会使用xrange()来代替)。

range()让我们通过除1其他步骤通过i

>>> list(range(0, 5, 2))
[0, 2, 4]
>>> list(range(4, -1, -1))
[4, 3, 2, 1, 0]

你通常不需要为序列使用索引; 而不是使用itertools库或itertools reversed()函数; 大部分用于“特殊”索引值范围的用例都包含在内:

>>> menu = ['spam', 'ham', 'eggs', 'bacon', 'sausage', 'onions']
>>> # Reversed sequence
>>> for dish in reversed(menu):
...     print(dish)
... 
onions
sausage
bacon
eggs
ham
spam
>>> import itertools
>>> # Only every third
>>> for dish in itertools.islice(menu, None, None, 3):
...     print(dish)
... 
spam
bacon
>>> # In groups of 4
>>> for dish in itertools.izip_longest(*([iter(menu)] * 4)):
...     print(dish)
... 
('spam', 'ham', 'eggs', 'bacon')
('sausage', 'onions', None, None)

试图这是一个故意的语言选择。 大多数时候在较低级别的语言中循环遍历数字,这些数字被用作序列中的索引。 对于实际需要这些数字的情况,应该使用range内置函数 - 该函数返回具有期望range([start], end, [step])输入值的迭代。

更经常地,一个确实需要一个序列的项目和它们的索引,在这种情况下,应该使用built-in enumerate

for index, letter in enumerate("word"):
     print index, letter

最后,在C语言和派生语言(Java,PHP,Javascript,C#,Objective C)中, for语法只是while循环中的一些(非常粗糙的)语法 - 而且您可以在Python中编写相同的while循环。

而不是: for (start_expr, check_expr, incr_expr) { code_body}你可以这样做:

start_expr
while check_expr:
    code_body
    incr_expr

它的工作原理完全相同。


for i in range(length):
    #do something

什么range是。

链接地址: http://www.djcxy.com/p/24013.html

上一篇: for with counter

下一篇: Python equivalent of Ruby's each