Erlang Lists:展平嵌套列表
Posted
技术标签:
【中文标题】Erlang Lists:展平嵌套列表【英文标题】:Erlang Lists: Flatten a nested list 【发布时间】:2020-10-11 13:25:26 【问题描述】:给定的 erlang 列表是 L = [[ [], [1,3], [4,5] ]].
预期输出为[[1,3], [4,5]]
我尝试使用lists:flatten/1
,但它会将扁平列表返回为[1,3,4,5]
。
【问题讨论】:
您的描述不完整。您应该写下您的确切目标:输入类型(列表中有多少嵌套级别,成员类型......),要执行的操作和输出类型。如果你做得好,80%的工作就完成了。 【参考方案1】:这个问题是模棱两可的,因为它并没有真正告诉我们需要如何进行扁平化。仅从您的输入/输出示例来看,您似乎只想展平一个级别并忽略空列表。这可以通过以下方式实现:
1> lists:filter(fun (X) -> X /= [] end, lists:append([[ [], [1,3], [4,5] ]])).
[[1,3],[4,5]]
但人们也可以想象其他符合这些标准的扁平化。希望这能让你开始!
【讨论】:
【参考方案2】:不,flatten 函数返回一个包含非列表元素的列表,它消除了输入列表中的所有列表。
如果您使用了有效的算法,则不需要展平任何列表,因此创建列表的最佳方法是在列表的头部添加元素,并尽量不要使用 ++
和 --
运算符。
【讨论】:
以上是关于Erlang Lists:展平嵌套列表的主要内容,如果未能解决你的问题,请参考以下文章