从列表列表中选择一些列表
Selecting some lists from a list of lists
我想在特定条件下从列表列表中获得一些列表。例如:
`((a w) (e w))`
来自
`((a w) (e w) (i u) (o u))`
条件是'w 在第二个位置。
我的代码
(filter (andmap (equal? (cdr lst) 'w)) 'lst)
和
(define lst '((a w) (e w) (i u) (o u)))
不工作。我做错了什么?
您不应该引用列表:'lst
与 lst
不同。要访问第二个元素,请使用 second
(如果未定义,请改用 cadr
)。使用 cdr
,您将获得列表(这是另一个列表)的 rest,而不是它的第二个 元素 。哦,filter
期望 lambda
作为它的第一个参数,而不是 andmap
。这就是我的意思:
(define lst '((a w) (e w) (i u) (o u)))
(filter (lambda (sl) (equal? (second sl) 'w))
lst)
=> '((a w) (e w))
我想在特定条件下从列表列表中获得一些列表。例如:
`((a w) (e w))`
来自
`((a w) (e w) (i u) (o u))`
条件是'w 在第二个位置。
我的代码
(filter (andmap (equal? (cdr lst) 'w)) 'lst)
和
(define lst '((a w) (e w) (i u) (o u)))
不工作。我做错了什么?
您不应该引用列表:'lst
与 lst
不同。要访问第二个元素,请使用 second
(如果未定义,请改用 cadr
)。使用 cdr
,您将获得列表(这是另一个列表)的 rest,而不是它的第二个 元素 。哦,filter
期望 lambda
作为它的第一个参数,而不是 andmap
。这就是我的意思:
(define lst '((a w) (e w) (i u) (o u)))
(filter (lambda (sl) (equal? (second sl) 'w))
lst)
=> '((a w) (e w))