用 scala 替换列表中的元素
如何用不可变列表按索引替换元素。
例如
val list = 1 :: 2 ::3 :: 4 :: List()
list.replace(2, 5)
How do you replace an element by index with an immutable List.
E.g.
val list = 1 :: 2 ::3 :: 4 :: List()
list.replace(2, 5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果你想替换索引 2,那么
如果你想找到每个有 2 的地方并放入 5,
在这两种情况下,你并不是真正的“替换”,而是返回一个包含在那个(那些)位置有不同的元素。
If you want to replace index 2, then
If you want to find every place where there's a 2 and put a 5 in instead,
In both cases, you're not really "replacing", you're returning a new list that has a different element(s) at that (those) position(s).
除了前面所说的之外,您还可以使用
patch
函数来替换序列的子序列:In addition to what has been said before, you can use
patch
function that replaces sub-sequences of a sequence:您可以使用
list.updated(2,5)
(这是Seq
上的一个方法)。为此,最好使用 scala.collection.immutable.Vector ,因为更新 Vector 需要(我认为)恒定的时间。
You can use
list.updated(2,5)
(which is a method onSeq
).It's probably better to use a
scala.collection.immutable.Vector
for this purpose, becuase updates onVector
take (I think) constant time.如果您进行大量此类替换,最好使用可变类或数组。
If you do a lot of such replacements, it is better to use a muttable class or Array.
您可以使用 map 生成一个新列表,如下所示:
You can use map to generate a new list , like this :
也可以使用 patch 函数来实现,其中
2 是我们要添加值的位置,
List(27)
是我们要添加到列表中的值,1 是元素的数量从原来的列表中替换掉。It can also be achieved using patch function as
where 2 is the position where we are looking to add the value,
List(27)
is the value we are adding to the list and 1 is the number of elements to be replaced from the original list.以下是 scala List 中字符串替换的简单示例,您可以对其他类型的数据执行类似操作
following is a simple example of String replacement in scala List, you can do similar for other types of data