Соответствие и удаление объектов в списке кортежей

У меня есть список кортежей, скажем,

[{x, a, y}, {x, b, y}].

Есть ли встроенная функция (или могу я использовать комбинацию СТАНДАРТНЫХ ФОРМАТОВ ИНТЕРФЕЙСА КОНТРОЛЬНЫХ ЗАДАЧ) удалить все соответствие кортежей {x, _, y}, как в соответствии и удаляют на основе первого и третьего срока в кортежах, игнорируя второе?

6
задан Sam 14 August 2014 в 08:40
поделиться

1 ответ

Функция lists: filter / 1 соответствует вашим потребностям, например

Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).

Вы также можете использовать понимание списков, которое похоже на комбинацию списков: карта / 2 и списков: фильтр / 2.

[L || L <- Ls, F(L)]

Если ваш предикат был противоположным, в том смысле, что вам нужны были только те, которые совпадают с {x, _, y}, вы могли бы написать его следующим образом, потому что генератор отфильтрует те, которые не соответствуют шаблону.

[L || {x,_,y}=L <- Ls]
14
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: