gpt4 book ai didi

lisp - 从其他列表中删除列表

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:22 24 4
gpt4 key购买 nike

我有包含其他列表的列表(仅限 2 级)

((S U S U R) (S U S R) (S U R))

如何从包含一些对的列表中删除列表,列表中第一个和第二个位置或第 3 个和第 4 个位置(在我的示例中为“S U”)上的 2 个元素的相同组合并返回 ((S U S R ) (S U R))

我要转型

((S U S U R) (S U S R) (S U R)) 到 => ((S U S R) (S U R))

((S U R S U) (S U S R) (S U R)) 到 => ((S U R S U) (S U S R) (S U R)) - 不要改变,因为这里是对有 S U, R S, U 和没有 S U 2 次或更多次

最佳答案

REMOVE-IF

(remove-if #'oddp '(1 2 3 4 5))
=> (2 4)

LAMBDA

(funcall (lambda (x) (string x)) :example)
=> "EXAMPLE"

EQUALP

(equalp '(S U) (list 's 'u))
=> T

SUBSEQ

(subseq '(a b c d) 0 3)
=> (A B C)

小心:

(subseq '(a b c d) 0 10)
=> ERROR

您还可以使用 LENGTH获取列表的大小。您还可以使用以下功能...

NTHCDR

(nthcdr '(s u s u r u) 5)
=> (U)

LDIFF

(let ((list '(a b c d)))
(ldiff list (nthcdr 10 list)))
=> (A B C D)

(let ((list '(a b c d)))
(ldiff list (nthcdr 2 list)))
=> (A B)

你想做什么

您想从输入列表中删除满足以下谓词的元素:给定一个列表,该列表的一个子集等于(S U) (见评论).

您的代码将如下所示:

(defun remove-s-u-at-pos-3 (list)
(remove-if (lambda (...) ...) list))

您需要提取每个访问列表的一部分并将其与(S U) 进行比较。

关于lisp - 从其他列表中删除列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770993/

24 4 0
文章推荐: list - 在已经有数字的位置插入一个数字,创建一个List
文章推荐: lisp - 单引号字符串 checkin 列表
文章推荐: python - 当尝试在 python 中打印 a\时扫描字符串文字时 EOL
文章推荐: css - react 灵敏。在媒体查询、 float 问题和字体大小中使用 CSS 更改
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com