替代'for x in xrange(len(x))'

9 python for-loop anti-patterns

所以我在另一篇文章中看到了以下"糟糕"的片段,但我见过的唯一选择是修补Python.

for i in xrange(len(something)):
  workwith = something[i]
  # do things with workwith...
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能避免这种"反模式"?

Gre*_*ill 23

如果你需要知道循环体中的索引:

for index, workwith in enumerate(something):
    print "element", index, "is", workwith
Run Code Online (Sandbox Code Playgroud)


kmk*_*lan 22

Pythonic

for workwith in something:
    # do things with workwith
Run Code Online (Sandbox Code Playgroud)


myr*_*lav 12

由于有两个 问题的答案是完全有效的(每个都有一个假设)并且问题的作者没有告诉我们索引的命运,因此有效答案应为:

如果你根本不需要索引:

for workwith in something:
    print "element", workwith
Run Code Online (Sandbox Code Playgroud)

如果你需要索引:

for index, workwith in enumerate(something):
    print "element", index, "is", workwith
Run Code Online (Sandbox Code Playgroud)

如果我的答案不合适,请评论,我会删除它:)