我对Python很陌生,正在研究现有的代码库。迭代列表的方法
我看到这种模式的代码位:
for i in range(len(my_list)):
item = my_list[i]
# process item
有一个很好的理由,这不应该简化为:
for item in my_list:
# process item
我不需要的项目的索引在for
循环内,除了取消引用列表项本身。那么后者有没有问题,我没有看到?
我对Python很陌生,正在研究现有的代码库。迭代列表的方法
我看到这种模式的代码位:
for i in range(len(my_list)):
item = my_list[i]
# process item
有一个很好的理由,这不应该简化为:
for item in my_list:
# process item
我不需要的项目的索引在for
循环内,除了取消引用列表项本身。那么后者有没有问题,我没有看到?
有很好的理由将其简化为第二种形式;它是首选的Pythonic方法;但只要使用foo
直接:
for foo in my_list:
# process item
如果需要索引以及,使用enumerate()
:
for i, foo in enumerate(my_list):
# process item
创建for
遍历列表len()
的range()
通常是一个标志有人从一种没有for each
构造的语言转移到Python,就像C一样,他们还没有习惯Python for
循环的真正工作方式。
而我能想到的唯一原因(就是不知道'for blah in'是否可用),是需要循环修改列表,但显然这属于你的'enumerate'示例;) –
@ JonClements:该索引仍然会被关闭,在这种情况下,你必须使用'while'循环。 –
关闭一个吧? –
他们都是一样的,但我不明白你为什么要这样做。 'foo'将永远是最后一个元素。后者更清洁 – TerryA
@Haidro我认为我们可以假设循环体中有更多的代码。 – delnan
@Haidro,delnan是正确的。我会在这个问题上更清楚一点。 –