我正在阅读一些在线Python的东西,还有一些有趣的东西出现了。基本上它说不要这样做:
for i in range(len(mylist)):
print i, mylist[i]
相反,它表示最好这样做:
for (i, item) in enumerate(mylist):
print i, item
通常我会选择第一个选项,但我认为这样做不会有任何潜在的风险。为什么第一个代码不好?与后者相比,第一段代码是否会对前面的代码行产生某种影响?
答案 0 :(得分:5)
除可读性因素外,第二个片段适用于任何可迭代,而第一个仅适用于可以编入索引的对象(例如列表)。例如,假设您使用的是集合:
>>> myset = {1,2,3}
>>>
>>> enumerate(myset) # works
<enumerate object at 0x2c9440>
>>>
>>> myset[0] # doesn't work
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
这增加了代码的灵活性,如果您选择切换数据结构,可以让您的生活更轻松。