明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 679|回复: 4

[提问] 列表提取

[复制链接]
发表于 2021-3-26 17:06 | 显示全部楼层 |阅读模式
3明经币
求助!如下:比如有列表(1  2  3 (4 3 1) 5 (4  5 1) 6  (5  2  3) ...)里面个数、形式不定,用什么办法把子列表开头元素是一样的,比如(1  2  3 (4 3 1) 5 (4  5 1) 6  (5  2  3) ...)中的(4 3 1)和(4  5 1),提取出来分别赋值给变量。

感谢!

最佳答案

查看完整内容

;; (wuyu '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3))) (defun wuyu (L / I A LST) (foreach X L (if (listp X) (if (setq I (car X) A (assoc I LST) ) (setq LST (subst (cons I (cons X (cdr A))) A LST)) (setq LST (cons (list I X) LST)) ) ) ) (mapcar 'cdr LST) ) ;; 批量设置变量并赋值——这不是一个好主意!!! (defun pSet ( ...
发表于 2021-3-26 17:06 | 显示全部楼层
本帖最后由 caoyin 于 2021-3-27 14:34 编辑


;; (wuyu '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3)))
(defun wuyu (L / I A LST)
  (foreach X L
    (if (listp X)
      (if (setq I (car X)
                A (assoc I LST)
          )
         (setq LST (subst (cons I (cons X (cdr A))) A LST))
         (setq LST (cons (list I X) LST))
       )
    )
  )
  (mapcar 'cdr LST)
)

;; 批量设置变量并赋值——这不是一个好主意!!!
(defun pSet (L / N S SL)
  (setq N 0)
  (foreach X L
    (setq S  (read (strcat "TMP" (itoa N)))
          SL (cons S SL)
          N  (1+ N)
    )
    (set S X)
  )
  SL
)

;; 你要的结果,返回批量赋值的符号名
(pSet (wuyu '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3))))
回复

使用道具 举报

发表于 2021-3-26 17:54 | 显示全部楼层
;;(getIndexIs '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3)) 4)
(defun getIndexIs (LST IND)
  (vl-remove-if-not
    '(lambda (X)
      (and (listp X) (= (car X) IND))
     )
    LST
  )
)
回复

使用道具 举报

 楼主| 发表于 2021-3-26 22:55 | 显示全部楼层
本帖最后由 chenxiy825 于 2021-3-26 23:03 编辑
caoyin 发表于 2021-3-26 17:54
;;(getIndexIs '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3)) 4)
(defun getIndexIs (LST IND)
  (vl-remove-if- ...

谢谢!我看到有返回值,但是我不知道相同值是4的时候,相同值是随机的,怎么弄?还有怎么赋值给变量呢?
回复

使用道具 举报

 楼主| 发表于 2021-3-27 16:26 | 显示全部楼层
caoyin 发表于 2021-3-26 17:06
;; (wuyu '(1 2 3 (4 3 1) 5 (4 5 1) 6 (5 2 3)))
(defun wuyu (L / I A LST)
  (foreach X L

函数mapcar、lambda、apply,子程序一致迷迷糊糊的:Q,还是感谢你了!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-6 18:00 , Processed in 0.220928 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表