【问题标题】:How to replace occurrence of an element with multiple elements in a sequence?如何用序列中的多个元素替换一个元素的出现?
【发布时间】:2016-06-02 17:41:52
【问题描述】:

所以,我有一个项目清单。我想根据条件用一组元素替换每个出现的项目。

理想情况下,map 可以让您将一个包含 N 个元素的列表转换为另一个包含 N 个元素的列表,但这里长度会随着我们在索引处插入更多元素而增加,在该索引处我们将其他单个元素替换为一个元素列表。

【问题讨论】:

  • 你能举个例子吗?听起来你想要mapcat

标签: clojure


【解决方案1】:

按照@Lee 的建议,您可以使用mapcat 来实现。

例如:

(mapcat #(if (even? %) [% %] [%]) (range 10))

将导致:

=> (0 0 1 2 2 3 4 4 5 6 6 7 8 8 9)

【讨论】:

  • 完美!正是我想要的。
【解决方案2】:

除了map,您可以使用reduce,从一个空的累加器集合[]开始。

(reduce #(conj %1 (dec %2) %2)
        []
        [1 3 5 7])

所以在这里,从奇数集合[1 3 5 7] 开始,我们将额外的偶数添加到序列中。输出是:

[0 1 2 3 4 5 6 7]

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 2018-07-23
    • 2021-09-26
    • 1970-01-01
    • 2015-11-09
    • 2021-06-18
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多