| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Убрать лишние элементы из списка

Убрать лишние элементы из списка

Ответ
Поиск в этой теме
Непрочитано 01.12.2021, 15:45 #1
Убрать лишние элементы из списка
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 470

Всем привет!

Имеется список с именами файлов типа:

("Файл-1" "Файл-2" "ФАЙЛ-1" "ФАйл-1" "файл-1" "Файл-3" … )

С точки зрения LISP - это разные элементы списка.
С точки зрения Windows - файлы с одинаковыми именами.

Нужно убрать "лишнее", т.е. одинаковое по смыслу,
но стоящее дальше от начала списка.

т.е. "лишнее" здесь - "ФАЙЛ-1" "ФАйл-1" "файл-1".

Чтобы получилось:

("Файл-1" "Файл-2" "Файл-3" … )

Загнать всё в верхний регистр и убрать повторы - легко,
но "не спортивно" как-то...

Напишу, конечно, и сам (тут навскидку строчек 20 кода),
но, может быть у кого-то есть уже готовое решение?
__________________
Счастливо, Алексей!
Просмотров: 1384
 
Непрочитано 01.12.2021, 15:56
#2
trir


 
Регистрация: 18.12.2010
Сообщений: 5,057


Цитата:
но "не спортивно" как-то...
почему?

list = list.Select(s => s.ToUpper()).Distinct().ToList();
trir вне форума  
 
Автор темы   Непрочитано 01.12.2021, 16:33
#3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 470


Цитата:
Сообщение от trir Посмотреть сообщение
почему?
Из эстетических соображений.

Тут вот какое дело. Эти имена файлов пользователи
записывают в таблицу Excel. Затем программа из
данных, находящихся разных фалах Excel и DWG
создает новые DWG-файлы как раз с указанными
именами.

Некоторым пользователям имена критичны, т.к.
они "зрительно" наполняют их смыслом. Что-то
типа:

"НасосыКонтурВходы1...18_Автомат"

вот так - разные буквы, цифры, да ещё и точки,
которые не отделяют расширение, а являются
частью имени. И загонять всё это в другой
регистр не хочется.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 01.12.2021, 17:35
2 | #4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Код:
[Выделить все]
 (setq lst '("Файл-1" "Файл-2" "ФАЙЛ-1" "ФАйл-1" "файл-1" "Файл-3"))
(foreach item lst
  (if (not (member (strcase item) (mapcar (function strcase) res)))
    (setq res (cons item res))
  ) ;_ end of if
) ;_ end of foreach
(reverse res)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Убрать лишние элементы из списка

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить, не отображаются некоторые элементы чертежа в пространстве листа kochergin AutoCAD 3 01.12.2016 09:44
Не загружаются элементы SPDS Graphics 1nv1te ПО от CSoft 4 09.07.2014 09:07
LISP. Умножить все элементы списка на число (без лямбды) WhiteShark LISP 16 27.01.2014 19:42
Сортировка списка (элементы текст) по возрастанию sdv79 Программирование 20 02.01.2012 23:45
Сортирвка списка последовательно, по приоритетам (вопрос) Tonic Программирование 9 02.02.2010 14:25