如何向列表的每个元素添加递增计数器

发布于 2024-12-11 09:53:01 字数 497 浏览 0 评论 0原文

我有:

scala> val alphaList = List("a", "b")
alphaList: List[java.lang.String] = List(a, b)

并且我想要一个元组列表,例如:

List((a,1),(b,2))

通常在Java中我会做类似的事情:

List alphaList = new ArrayList<String>()
alphaList.add("a");alphaList.add("b");
List newList = new ArrayList<String>();
for ( int i = 0; ii < alphaList.size(); i++ )
  newList.add(alphaList[i] + i);

我想要得到的是,如何获得一个可以在处理列表时使用的递增变量?

I have:

scala> val alphaList = List("a", "b")
alphaList: List[java.lang.String] = List(a, b)

and I'd like a list of tuples like:

List((a,1),(b,2))

Normally in Java I'd do something like:

List alphaList = new ArrayList<String>()
alphaList.add("a");alphaList.add("b");
List newList = new ArrayList<String>();
for ( int i = 0; ii < alphaList.size(); i++ )
  newList.add(alphaList[i] + i);

What I'm trying to get at, is how do I get an incrementing variable that I can use while processing a List?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谈下烟灰 2024-12-18 09:53:02

怎么样...

def zipWithIndex1[A](xs:Seq[A]) = xs.map{var i = 0; x => i+=1; (x,i)}

测试:

zipWithIndex1("sdlfkjsdlf")
//--> Vector((s,1), (d,2), (l,3), (f,4), (k,5), (j,6), (s,7), (d,8), (l,9), (f,10))

How about...

def zipWithIndex1[A](xs:Seq[A]) = xs.map{var i = 0; x => i+=1; (x,i)}

Test:

zipWithIndex1("sdlfkjsdlf")
//--> Vector((s,1), (d,2), (l,3), (f,4), (k,5), (j,6), (s,7), (d,8), (l,9), (f,10))
半夏半凉 2024-12-18 09:53:01
alphaList.zipWithIndex.map {
  case (k, v) => (k, v + 1)
}

zipWithIndex 将每个元素替换为其自身及其索引(从 0 开始)的元组。 map 匹配该元组,并创建一个索引加 1 的新元组,以便从 1 开始,而不是从 0 开始。

alphaList.zipWithIndex.map {
  case (k, v) => (k, v + 1)
}

The zipWithIndex replaces each element with a tuple of itself and its index (starting from 0). The map matches the tuple, and creates a new tuple with the index incremented by 1, so that you start from 1, instead of 0.

缱绻入梦 2024-12-18 09:53:01

作为 Axel22 答案的替代方案,这很好:

alphaList.zip(Stream.from(1))

As an alternative to Axel22's answer, which is fine :

alphaList.zip(Stream.from(1))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文