Python 2.6引入了next
函数。Python:为什么我应该使用next()而不是obj.next()?
这是为什么这是必要的?人们总是可以输入obj.next()
而不是next(obj)
。
后者更多pythonic
?
Python 2.6引入了next
函数。Python:为什么我应该使用next()而不是obj.next()?
这是为什么这是必要的?人们总是可以输入obj.next()
而不是next(obj)
。
后者更多pythonic
?
通过调用其
next()
(__next__()
在python 3)方法检索来自迭代下一个项目。如果给出默认,则在迭代器耗尽时返回,否则返回StopIteration
。
您得到default
选项。
+1,但不能简单地为该方法添加一个可选的'default'参数:'obj 。接下来(默认)'? –
@Tim:那么每个迭代器实现都必须复制逻辑。 –
另外,在Python 3中,next()方法不再存在。它被'__next __()'取代。 'next()'函数允许统一的行为。 – rubik
除了显而易见的附加功能外,与发生器表达式一起使用时,它看起来也更好。比较
(x for x in lst if x > 2).next()
到
next(x for x in lst if x > 2)
后者是很多与Python的风格休息,恕我直言更一致。
每次执行语句时,生成器表达式是不是从头开始?看起来像这样只会返回第一个元素。 –
@Mark:是的,这就是这个习惯用法的目的:从满足特定标准的迭代中返回第一个元素(否则就提高'StopIteration')。 –
例如,它就像Ruby中的Enumerable#find'。 –
我一直很想知道为什么Monty Python启发的Python语言感觉需要投入术语“pythonic”而不是更自然的“Pythonesque”..... –
也问:http:// stackoverflow。 com/questions/656155/why-did-python-2-6-add-a-global-next-function –