【发布时间】:2013-04-08 08:18:35
【问题描述】:
R 中是否存在促进或提供“Python-like generators”实现的包或语言结构?
“类似 Python 的生成器”是指在调用之间保持状态的函数,在 R 语法中并从 Python 借用关键字 yield 将类似于:
iterable.fun <- function(){
yield list('a','b','c')
}
使用 yield 而不是 return,然后连续调用该函数 3 次将给出:
> iterable.fun()
'a'
> iterable.fun()
'b'
> iterable.fun()
'c'
编辑:我遗漏了 Python 生成器与迭代器不同的一个方面。就是要迭代的整个对象列表不是建立在第一次调用之后然后迭代的,而是每个函数调用都会创建一个元素,该元素将为该调用返回。
【问题讨论】:
-
R 试图成为一种函数式语言。此请求只能通过非功能性方法来满足。如有必要,您可以使用
<<-颠覆功能,但最好将您想要的最终结果视为最终结果,并找到功能解决方案。 -
另外,Luke Tierney 写了一个Lazy List Implementation。
标签: python r python-3.x generator