我想在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循环中循环索引的最大值?
答案 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()
。