Python 迭代列表的方法
我对Python非常陌生,正在使用现有的代码库 我在代码中看到了这种模式:Python 迭代列表的方法,python,list,iteration,Python,List,Iteration,我对Python非常陌生,正在使用现有的代码库 我在代码中看到了这种模式: for i in range(len(my_list)): item = my_list[i] # process item 是否有充分的理由不应将其简化为: for item in my_list: # process item 我不需要for循环中的项的索引,只需要取消对列表项本身的引用。那么,我没有看到后者有什么问题吗?有充分的理由将其简化为第二种形式;这是首选的肾盂法;但是直接使用fo
for i in range(len(my_list)):
item = my_list[i]
# process item
是否有充分的理由不应将其简化为:
for item in my_list:
# process item
我不需要
for
循环中的项的索引,只需要取消对列表项本身的引用。那么,我没有看到后者有什么问题吗?有充分的理由将其简化为第二种形式;这是首选的肾盂法;但是直接使用foo
:
for foo in my_list:
# process item
如果还需要索引,请使用enumerate()
:
在列表的len()
的range()
上为创建一个循环通常是某人从一种没有为每个构造创建的语言迁移到Python的标志,比如C,而且他们还没有习惯Pythonfor
循环如何真正工作。有充分的理由将其简化为第二种形式;这是首选的肾盂法;但是直接使用foo
:
for foo in my_list:
# process item
如果还需要索引,请使用enumerate()
:
在列表的len()
的range()
上为创建一个for
循环通常是一种迹象,表明有人从一种没有为每个构造创建的语言迁移到Python,比如C,他们还没有习惯Pythonfor
循环的实际工作方式。他们都是一样的,但我不明白你为什么要这么做foo
将始终是最后一个元素。后者是cleaner@Haidro我想我们可以假设循环体中还有一些代码。@Haidro,delnan是正确的。我会在问题中说得更清楚。它们都是一样的,但我不明白你为什么要这样做foo
将始终是最后一个元素。后者是cleaner@Haidro我想我们可以假设循环体中还有一些代码。@Haidro,delnan是正确的。我会在问题中说得更清楚。我能想到的唯一原因(除了不知道for blah in
是可用的之外)是修改列表需要循环,但显然这取决于您的枚举
示例;)@JonClements:索引仍然会被关闭1,在这种情况下,你必须使用,
循环。@JonClements:对不起,我假设你所说的修改是指通常的“如果我删除元素,事情就不起作用”循环问题。我能想到的唯一原因是(除了不知道for blah in
是可用的),是否需要循环来修改列表,但显然这取决于您的enumerate
example;)@JonClements:索引仍然会被关闭1,在这种情况下,您必须使用while
循环。@JonClements:对不起,我假设您所说的修改是指通常的“如果我删除元素,事情就不起作用”循环问题。