我如何通过仅从子列表中搜索一个元素来删除子列表。
例如,让我们列出:
( (pacific (atlanta ohaio) (NY LI))
(atlanta (pacific blue) (ohaio green)) )
我想从列表中删除“pacific”并得到:
( (pacific (atlanta ohaio) (NY LI))
(atlanta (ohaio green)) )
任何想法将不胜感激:)。
最佳答案
问题中没有明确说明从输入列表中删除元素的标准。这将适用于显示的示例:
(define lst
'((pacific (atlanta ohaio) (NY LI))
(atlanta (pacific blue) (ohaio green))))
(map (lambda (slst)
(filter (lambda (e)
(not (and (list? e) (member 'pacific e))))
slst))
lst)
=> '((pacific (atlanta ohaio) (NY LI)) (atlanta (ohaio green)))
如有必要,对于其他输入,您可以调整最里面的 lambda 中的条件,直到结果符合您的要求。例如,我解释了问题中的评论:
I want to delete the sublist that contains the searched word
如:“在子列表中的任何位置找到搜索的词”;如果搜索到的词只能在第一个位置找到,则相应地调整条件。
关于algorithm - 按元素出现删除子列表(方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20771344/