乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 7

[编程交流] 从中删除元素(列表上)

[复制链接]

46

主题

92

帖子

45

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
235
发表于 2022-7-5 17:35:32 | 显示全部楼层 |阅读模式
你好
我编写了一个函数来转换列表。
该函数删除列表2中第一个元素不存在的子列表。
请发表评论。
  1. (defun convert (L b / L a)
  2. (setq a (mapcar 'car L))
  3. (mapcar '(lambda (%) (setq a (mapcar '(lambda (e) (if (= e %) nil e)) a))) b)
  4. (setq a (vl-remove nil a))
  5. (mapcar '(lambda (%) (setq L (mapcar '(lambda (x) (if (= (car x) %) nil x)) L))) a)
  6. (vl-remove nil L)
  7. )

例子:
  1. (convert lst1 lst2)

清单1:
  1. '(("1" 1.7 1.7)
  2. ("2" 9.9 9.9)
  3. ("3" 9.8 9.
  4. ("4" 9.9 9.9)
  5. ("5" 1.4 1.4)
  6. ("6" 8.8 8.
  7. ("7" 1.3 1.3)
  8. ("8" 8.7 8.7)
  9. ("9" 9.5 9.5))

清单2:
  1. '("1" "3" "9")

结果:
  1. '(("1" 1.7 1.7)
  2. ("3" 9.8 9.
  3. ("9" 9.5 9.5))
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:50:23 | 显示全部楼层
试试这个:
 
  1. (defun convert (l1 l2 / l)
  2. (mapcar '(lambda (x) (if (member (car x) l2)(setq l (cons x l)))) l1)
  3. (if l (reverse l) (princ)
  4. )
  5. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:53:36 | 显示全部楼层
我建议:
示例:
  1. (convert
  2.   '("1" "3" "9")
  3.   '(
  4.        ("1" 1.7 1.7)
  5.        ("2" 9.9 9.9)
  6.        ("3" 9.8 9.
  7.        ("4" 9.9 9.9)
  8.        ("5" 1.4 1.4)
  9.        ("6" 8.8 8.
  10.        ("7" 1.3 1.3)
  11.        ("8" 8.7 8.7)
  12.        ("9" 9.5 9.5)
  13.    )
  14. )
  15. => (("1" 1.7 1.7) ("3" 9.8 9. ("9" 9.5 9.5))
回复

使用道具 举报

46

主题

92

帖子

45

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
235
发表于 2022-7-5 18:01:23 | 显示全部楼层
谢谢你。
李Mac看着你的代码和你的思维方式,我知道我还有很多东西要学。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:09:57 | 显示全部楼层
大家好,
我还有一个类似的问题,它如何能够扭转这种局面?因此,在LM的示例中,将返回与“2”“4”“5”“6”“7”和“8”的关联。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:26:02 | 显示全部楼层
 
非常感谢。我希望我的代码对你的学习有用。
 
 
  1. (defun convert ( k l )
  2.    (vl-remove-if '(lambda ( x ) (member (car x) k)) l)
  3. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:32:55 | 显示全部楼层
谢谢李,
科瓦尔并不是唯一一个会从中吸取教训的人。
无论如何,这是一个很好的线程,它启发了我收集一些“assoc list manipulation”子函数,虽然有很多子函数,但它们只适用于普通列表。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 18:37:18 | 显示全部楼层
当您有第一个解决方案时,可以在第一个解决方案上构建第二个请求:
 
  1. 9
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 03:13 , Processed in 1.224505 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表