在Scala中向后遍历两个列表(长度不同)

ade*_*ini 3 loops scala list

在Scala中向后遍历两个(长度不同)列表的最有效方法是什么。

所以有两个清单

List(a,b,c) and List(1,2)
Run Code Online (Sandbox Code Playgroud)

对将是

(c,2) and (b,1)
Run Code Online (Sandbox Code Playgroud)

注意:我宁愿不要对每个列表做相反的处理。

Chi*_*rlo 5

一个简单的方法是:

 List('a','b','c').reverse zip List(1,2).reverse
Run Code Online (Sandbox Code Playgroud)

O(n)但是,如果您担心效率问题,可以倒退清单。

根据Listscaladoc,使用reverseIterator 可能会更有效。这样一来,您就不会创建与一样的新列表reverse,而是在不断迭代时遍历它。那将是:

val it = list1.reverseIterator zip list2.reverseIterator  //returns an Iterator you can force
it.toList // List((c,2), (b,1))
Run Code Online (Sandbox Code Playgroud)