给定的Erlang列表为L = [[ [], [1,3], [4,5] ]].,输出应为[[1,3], [4,5]]我尝试使用lists:flatten/1,但它返回的扁平列表为[1,3,4,5]。
L = [[ [], [1,3], [4,5] ]].
[[1,3], [4,5]]
lists:flatten/1
[1,3,4,5]
flmtquvp1#
这个问题很模糊,因为它并没有告诉我们如何进行扁平化。从输入/输出示例来看,您似乎只想扁平化一个级别,而忽略空列表。这可以通过以下方式实现:
1> lists:filter(fun (X) -> X /= [] end, lists:append([[ [], [1,3], [4,5] ]])). [[1,3],[4,5]]
但人们也可以想象其他符合这些标准的平坦化。希望这能让你开始!
sauutmhj2#
不,flatten函数返回一个包含非列表元素的列表,它会消除输入列表中的所有列表。如果您执行了一个有效的算法,则不需要对任何列表进行flatten,因此创建列表的最佳方法是在列表的头部添加元素,并尽量不要使用++和--操作符。
++
--
2条答案
按热度按时间flmtquvp1#
这个问题很模糊,因为它并没有告诉我们如何进行扁平化。从输入/输出示例来看,您似乎只想扁平化一个级别,而忽略空列表。这可以通过以下方式实现:
但人们也可以想象其他符合这些标准的平坦化。希望这能让你开始!
sauutmhj2#
不,flatten函数返回一个包含非列表元素的列表,它会消除输入列表中的所有列表。如果您执行了一个有效的算法,则不需要对任何列表进行flatten,因此创建列表的最佳方法是在列表的头部添加元素,并尽量不要使用
++
和--
操作符。