最佳答案
假设我有一个项目列表,并且我想对其中的前几个项目进行迭代:
items = list(range(10)) # I mean this to represent any kind of iterable.
limit = 5
来自其他语言的 Python naïf 可能会编写这种完美的可服务性和高性能(如果是单语的)代码:
index = 0
for item in items: # Python's `for` loop is a for-each.
print(item) # or whatever function of that item.
index += 1
if index == limit:
break
但是 Python 有枚举,它很好地包含了大约一半的代码:
for index, item in enumerate(items):
print(item)
if index == limit: # There's gotta be a better way.
break
所以我们要把多余的代码减半,但是肯定有更好的办法。
如果枚举采用另一个可选的 stop
参数(例如,它采用一个像这样的 start
参数: enumerate(items, start=1)
) ,我认为这是理想的,但下面的参数不存在(参见 这里有关枚举的文档) :
# hypothetical code, not implemented:
for _, item in enumerate(items, start=0, stop=limit): # `stop` not implemented
print(item)
注意,不需要为 index
命名,因为不需要引用它。
有没有一种惯用的写法? 怎么写?
第二个问题: 为什么不把这个内置到枚举中?