我想做的事情在Python如下:如何获取Python中for循环的上限?
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循环内的循环索引的最大值?
我看不出有什么毛病了第二种方法。您想要创建一个对象,然后可以重新使用并为其指定一个方便的名称。这正是变量的目的。如果有的话我会创建一个更多的变量来保持'mylist'的长度,这样你就不必每次迭代都调用'len'。 – 2014-09-23 20:15:13
@RogerFan为长度创建另一个变量似乎过多。即使它具有性能优势,它也是一种微型优化,并且在大多数情况下不会回报额外变量的成本(更多的代码,更多的是让读者记住,错误的可能性非常小在额外的代码等)。 – delnan 2014-09-23 20:19:35
@delnan当然这是一件小事和个人喜好,但我发现'total_steps'比'len(mylist)'更容易阅读。它更直接地传达意义,这使得生成的代码更易于理解。后者似乎意味着'len(mylist)'可能在每次调用时都有所改变,而前者表示在迭代中它是一个常量值。 – 2014-09-23 20:23:16