Списки Erlang: сгладьте вложенный список - PullRequest
0 голосов
/ 21 июня 2020

Данный список erlang равен L = [[ [], [1,3], [4,5] ]]. Ожидаемый результат [[1,3], [4,5]]

Я пробовал использовать lists:flatten/1, но он возвращает сплющенный список как [1,3,4,5].

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

нет, функция flatten возвращает список с элементами, которые не являются списками, она удаляет все списки внутри введенного списка. если вы использовали эффективный алгоритм, вам не нужно сглаживать какой-либо список, поэтому лучший способ создавать списки - добавлять элементы в начало списка и стараться никогда не использовать операторы ++ и --.

0 голосов
/ 21 июня 2020

Этот вопрос неоднозначен, поскольку на самом деле он не говорит нам, как нужно выполнять выравнивание. Просто из вашего примера ввода / вывода кажется, что вы хотите только сгладить один уровень и игнорировать пустые списки. Это может быть достигнуто с помощью:

1> lists:filter(fun (X) -> X /= [] end, lists:append([[ [], [1,3], [4,5] ]])).
[[1,3],[4,5]]

Но можно представить и другие сглаживания, которые соответствуют этим критериям. Надеюсь, это поможет вам начать!

...