如何在Python中获取for循环的上限?

时间:2014-09-23 20:12:28

标签: python enumerate

我想在Python中执行以下操作:

for index, value in enumerate(MyFunction()):
  logger.debug('Processing step %d of %d' % (index, len(MyFunction())

但这需要我在每次迭代期间调用MyFunction(),这是我不想要的。所以我当然可以做到

mylist = MyFunction()
for index, value in enumerate(mylist):
  logger.debug('Processing step %d of %d' % (index, len(mylist)))

但这需要一个不必要的变量。是否有更优雅的方式来引用for循环中循环索引的最大值?

2 个答案:

答案 0 :(得分:4)

知道上限的唯一方法是首先获得MyFunction()返回的序列的长度。

从您的示例开始,您可以将len()函数移出循环以提高效率:

mylist = MyFunction()
mylen = len(mylist)
for index, value in enumerate(mylist):
    logger.debug('Processing step %d of %d' % (index, mylen)))

答案 1 :(得分:2)

没有。通常,可能没有最大索引,因为您可以执行for x in some_infinite_iterator()