是否有相当于python的itertools.cycle()?
我想获取一个数组列表并无休止地循环它们。因此,如果数组名为A到D,则itertools.cycle可以执行:
itertools.cycle('[A,B,C,D]') --> A B C D A B C D...
这个'周期'或者' roll'原来的收藏品。
我正在深入研究Scala流以回答这个问题,但我想我会问我是否缺少一些内置功能。
谢谢!
答案 0 :(得分:3)
在这里,我使用了var divs = document.getElementByTagName('div');
var lastDiv = divs[divs.length-1];
对象的continually
方法的组合,然后将结果展平,希望这会有所帮助:
Stream
答案 1 :(得分:1)
Iterator.continually 会做的伎俩
Iterator.continually("scala").flatMap(x => x)
或
Iterator.continually("scala": Seq[Char]).flatten
Scala REPL
scala> Iterator.continually("scala").flatMap(x => x).take(100).foreach(println)
scala> Iterator.continually("scala": Seq[Char]).flatten.take(100).foreach(println)
或者
是的,您可以使用Stream对此进行建模
def cycle(str: String): Stream[String] = str #:: cycle(str)
用法:
cycle("scala").flatten
Scala REPL
scala> def cycle(str: String): Stream[String] = str #:: cycle(str)
cycle: (str: String)Stream[String]
scala> cycle("java").take(100)
res2: scala.collection.immutable.Stream[String] = Stream(java, ?)
scala> cycle("java").take(100).force
res3: scala.collection.immutable.Stream[String] = Stream(java, java, java, java, java, java, ... )