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

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

Как выделить часть элементов из списка?

Ответ
Поиск в этой теме
Непрочитано 08.09.2006, 13:15 #1
Как выделить часть элементов из списка?
kolobrod
 
Москва
Регистрация: 01.09.2006
Сообщений: 12

Помогите пожалуйста. Что-то не соображу никак.

Хочу, например, получить из списка 5 элементов, начиная с 10-го. Как это наиболее оптимально сделать?
Просмотров: 3669
 
Непрочитано 08.09.2006, 13:32
#2
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun lst-sort	(lst start len / res)
  (repeat len
    (if	res
      (setq start (1+ start))
      ) ;_ end of if
    (setq res (append res (list (nth start lst))))
    ) ;_ end of repeat
  ) ;_ end of defun
;;_$ (lst-sort '(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) 10 5)
;;(11 12 13 14 15)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.09.2006, 14:04
#3
kolobrod


 
Регистрация: 01.09.2006
Москва
Сообщений: 12


Понятно. Так я и сам придумал. Я думал может есть какая специальная функция или прием какой хитрый. Всетаки язык ориентированный на работу со списками....
kolobrod вне форума  
 
Непрочитано 08.09.2006, 14:06
#4
Кулик Алексей aka kpblc
Moderator

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


Если у тебя список структурированный, то можно попробовать через (assoc). Я код написал на коленке, так что сильно не бей.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.09.2006, 15:19
#5
kolobrod


 
Регистрация: 01.09.2006
Москва
Сообщений: 12


Спасибо. Буду разбираться...
kolobrod вне форума  
 
Непрочитано 08.09.2006, 15:21
#6
Кулик Алексей aka kpblc
Moderator

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


Так а что конкретно надо получить? Может, есть другой вариант?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.09.2006, 15:51
#7
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Можно так:
Код:
[Выделить все]
(setq lst '((67 . 0) (410 . "Model") 99 (10 171.577 206.218 0.0) 54 (11 22) 23 (55 44 66) 44))

(set 'trim_sp '(( a b c / ) (vl-remove-if-not '(lambda (x) (<= a (vl-position x c) (1- (+ a b)) )) c)))

_$ (trim_sp 1 3 lst)
((410 . "Model") 99 (10 171.577 206.218 0.0))
_$ (trim_sp 5 4 lst)
((11 22) 23 (55 44 66) 44)
CB вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как выделить часть элементов из списка?