2015-06-11 2 views
2

У меня есть 2 списка:Ракетка Схема сравнения и удалить ненужные элементы в списке

(Define list1 '("xx1" "xx2" xx3" "xx4" "xx5")) 
(Define list2 '("xx2" "xx4" "xx5")) 

элементы в списке выше, являются всего лишь пример, но в любом случае это будет строка элемента. Мне нужно сравнить оба списка и удалить элементы в списке1, которые находятся в списке2.

есть ли короткая программа, которую я могу сделать?

это не домашнее задание проекта, я хотел бы там был курс здесь для классов программирования, хотя:/

+0

возможно дубликат [Общие элементы в двух списках с дубликатами] (http://stackoverflow.com/questions/18152062/common-elements-in-two-lists-with-duplicates) – Crembo

+0

Класс программирования после языка Racket: [Как создавать программы] (http://www.htdp.org/). Стандарт схемы [SICP] (http://mitpress.mit.edu/sicp/full-text/book/book.html) и [видеокурс] (https://www.youtube.com/watch?v=2Op3QLzMgSY&list = PL8FE88AA54363BC46) магами на MIT opencourseware (R4RS, но в основном совместимы с сегодняшней схемой и '#! Racket'. Существует [пакет совместимости SICP] (http://stackoverflow.com/a/25096066/1565698)) – Sylwester

ответ

0
#lang racket 
(define list1 '("xx1" "xx2" "xx3" "xx4" "xx5")) 
(define list2 '("xx2" "xx4" "xx5")) 

(for/list ([x (in-list list1)] 
      #:unless (member x list2)) 
    x) 

Результат:

'("xx1" "xx3") 
+0

ИДЕАЛЬНО! что решает проблему из моего предыдущего поста :) – disaster999

1

Там также remove*

Пример :

#lang racket 
(define list1 '("xx1" "xx2" "xx3" "xx4" "xx5")) 
(define list2 '("xx2" "xx4" "xx5")) 

(displayln (remove* list2 list1)) 

Печать:

(xx1 xx3) 
Смежные вопросы