乐筑天下

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

[编程交流] 修改列表

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 09:49:44 | 显示全部楼层 |阅读模式
我有一个这样的清单
(1“A”“B”“C”2“A”“B”)
我将如何获得((1)(“A”“B”“C”)(2)(“A”“B”))?
 
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:00:47 | 显示全部楼层
又快又脏。。。
 
  1. (defun test (lst / temp newlist)
  2. (foreach x (reverse lst)
  3.    (if (numberp x)
  4.      (setq temp (not (setq newlist (cons (list x temp) newlist))))
  5.      (setq temp (cons x temp))
  6.    )
  7. )
  8. newlist
  9. )
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:07:01 | 显示全部楼层
谢谢我也在做类似的事情,但我的一直没有成功。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:17:32 | 显示全部楼层
任何时候。就像我说的‘date=’很快又脏。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 10:24:43 | 显示全部楼层
 
 
这是我的尝试
 
  1. (defun test (ls / a b c)
  2. (foreach j ls
  3.   (if (numberp j)
  4.           (if a
  5.                  (setq c (cons
  6.                   (vl-list* (reverse b) a) c) a j b nil)
  7.            (setq a j b nil))
  8.           (setq b (cons j b))
  9.           )
  10. )
  11. (setq   newllist (reverse (cons (vl-list* (reverse b) a) c)))
  12. )

 
 
  1. (test '(1 "A" "B" "C" 2 "A" "B"))
  2. ((("A" "B" "C") . 1) (("A" "B") . 2))

 
但是为了我的爱,我不能展示/构建虚线对来匹配丹中尉的腿要求的结果
 
((1.(“A”“B”“C”))(2.(“A”“B”))
 
 
Alanjt公司
 
我本来会像你的代码那样做,但你的代码最终是一个非点对。。
 
 
有什么想法吗?
 
很高兴论坛又开始运行了
 
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:32:39 | 显示全部楼层
 
请不要忘记,点对的第二项应该是原子,因此OP的请求是AutoLISP不支持的构造。
 
当做
米尔恰
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:39:03 | 显示全部楼层
这没有意义。您仍然可以关联非点对列表。
 
例如(使用我的sub)
 
  1. Command: (assoc 2 (test '(1 "A" "B" "C" "D" 2 "D" "F" "R" 5 "D" "E" "T")))
  2. (2 ("D" "F" "R"))
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 10:47:25 | 显示全部楼层
 
恐怕这与访问以键值样式存储的数据的一致性有关,同时仍保留“值”的数据类型(请参阅相关列表):
 
  1. (cdr '(2 . 1))       will return   1
  2. (cdr '(2 1 2 3))     will return   '(1 2 3)
  3. (cdr '(2 (1 2 3)))   will return   '((1 2 3))

 
当做
米尔恰
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:53:06 | 显示全部楼层
只需使用cadr而不是cdr来检索子列表。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 00:18 , Processed in 0.368574 second(s), 70 queries .

© 2020-2025 乐筑天下

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