找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1058|回复: 3

[LISP函数]:如何统计表中相同元素的个数?

[复制链接]
发表于 2007-3-3 05:30:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何统计表中相同元素的个数?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2007-3-3 11:40:13 | 显示全部楼层

  1. (while lst
  2.   (setq a(car lst))
  3.   (setq len (length lst))
  4.   (setq lst(vl-remove-if  '(lambda(x)(= a x)) lst))
  5.   ;;第一个是(- len(length lst))个
  6.   (setq return (cons (list a (- len(length lst)))return))
  7. )
  8. return


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-5 11:09:28 | 显示全部楼层
自己也编了一个:
[php]
(defun sumlist (ll / ss ll1)
  (setq ll1 (acet-list-remove-duplicates ll nil))
  (foreach i ll1
    (setq n 0 m 0)
    (while (< n (length ll))
      (if (= i (nth n ll))(setq m (1+ m)))
      (setq n (1+ n))
    )
    (setq ss (append ss (list (list i m))))
  )
  ss
)

[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2007-3-5 13:21:38 | 显示全部楼层
原表中重复项比较多的时候,aeo的函数效率非常高.
如果重复项少,可排序后再合并,或者试试下面这个
[php]
(DEFUN count1 (lst / tmplst tmp)
  (setq tmplst nil)
  (FOREACH item        lst
    (IF        (AND tmplst (setq tmp (assoc item tmplst)))
      (SETQ tmplst (SUBST (LIST item (1+ (CADR tmp))) tmp tmplst))
      (SETQ tmplst (cons (LIST item 1) tmplst))
    )
  )
  tmplst
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 22:19 , Processed in 0.350871 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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