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

时间:2009-02-23 18:10:53

标签: python for-loop anti-patterns

所以我在another post中看到了以下“糟糕”的片段,但我见过的唯一选择是修补Python。

for i in xrange(len(something)):
  workwith = something[i]
  # do things with workwith...

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

5 个答案:

答案 0 :(得分:23)

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

for index, workwith in enumerate(something):
    print "element", index, "is", workwith

答案 1 :(得分:22)

请参阅Pythonic

for workwith in something:
    # do things with workwith

答案 2 :(得分:12)

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

  

如果你do not need index

for workwith in something:
    print "element", workwith
     

如果你need index

for index, workwith in enumerate(something):
    print "element", index, "is", workwith

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

答案 3 :(得分:0)

例如:

[workwith(i) for i in something]

答案 4 :(得分:-3)

什么是x?如果它是一个序列或迭代器或字符串,那么

for i in x:
    workwith = i

会正常工作。