如何通过仅搜索其中的一个元素来删除子列表。
例如,让我们有一个列表:
( (pacific (atlanta ohaio) (NY LI))
(atlanta (pacific blue) (ohaio green)) )
我想从列表中删除“pacific”并获取:
( (pacific (atlanta ohaio) (NY LI))
(atlanta (ohaio green)) )
非常感谢任何想法:)。
答案 0 :(得分:1)
在问题中没有明确说明从输入列表中删除元素的标准。这适用于显示的示例:
(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中的条件,直到结果符合要求。例如,我在问题中解释了评论:
我想删除包含搜索词
的子列表
作为:“在子列表中的任意位置中找到搜索到的单词”;如果搜索到的单词只能在第一个位置找到,则相应地调整条件。