找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3284|回复: 9

[] 表指定位置的两个元素互换

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-6-13 00:36:30 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::List:Swap
调用格式: (XD::List:Swap lst n m)
参数说明: LST ---- 表
N,M ---- 序号,从1开始
返回值:
函数简介: 指定位置的两个元素互换
函数来源: 原创
函数作者: Lispboy
适用版本: 不限 
最后更新时间: 2013-06-13
备注: 命令: !c
(23 4 55 "a" 34 55 "d3" 33 55)

命令: (XD::List:Swap c 3 7)
(23 4 "d3" 55 34 "a" 55 33 55)
演示图片: -

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

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

×
本帖最后由 Lispboy 于 2013-6-13 02:56 编辑

  1. ;|
  2.     指定位置的两个元素互换

  3.     参数:

  4.       LST ---- 表
  5.       N,M ---- 序号,从1开始
  6. |;
  7. (defun XD::List:Swap (lst n m)
  8.   (setq l (XD::List:N-M lst n m)
  9.         l (cons (last l) (cdr (cons (car l)(cdr (reverse l)))))
  10.         l (append  (reverse (cdr (reverse (XD::List:N- lst n)))) l (XD::List:N+ lst m)) ;;使用了APPEND,有时间在改
  11.   )
  12. )


[pcode=lisp,true]
;;;不使用APPEND的代码
(defun XD::List:Swap (lst n m)
  (setq l (XD::List:N-M lst n m)
        l (cons (last l) (cdr (cons (car l) (cdr (reverse l)))))
  )
  (XD::List:Append (reverse (cdr (reverse (XD::List:N- lst n)))) (XD::List:Append l (XD::List:N+ lst m)))
)
[/pcode]

评分

参与人数 1D豆 +5 收起 理由
牢固 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 35个

财富等级: 招财进宝

发表于 2013-6-17 22:39:07 | 显示全部楼层
顶楼主,lsp学习者的福音啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-6-13 01:03:12 | 显示全部楼层
本帖最后由 Lispboy 于 2013-6-13 02:48 编辑

Lisphk 朋友贴过的一个帖子
http://bbs.xdcad.net/forum.php?m ... =668673&pid=3462240
1、删除指定元素
2、删除指定位置之间的所有元素
3、在指定的位置插元素
4、关联表两个关键字之间的所有元素
5、指定两个位置之间的所有元素
6、返回指定元素后面指定数量的元素(不给就到底)
7、交换指定位置的两个元素

带颜色的写完了,另外几个用 XD::List:N-  XD::List:N+ XD::List::N-M 也可以很方便的组合出来,抽空写上再发布吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-6-13 02:43:07 | 显示全部楼层
不错,支持一下楼主,期待后续作品。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

发表于 2013-6-17 23:00:04 | 显示全部楼层
本帖最后由 snsj 于 2013-6-17 23:04 编辑

  1. ;;;位置互换
  2. (defun lst-posbh (lst n p / i kj)
  3. (setq i 0 kj nil)
  4. (mapcar '(lambda(x)
  5.     (cond
  6.       ((= i (1- n))(setq kj(cons(nth (1- p)c)kj)))
  7.       ((= i (1- p))(setq kj(cons(nth (1- n) c)kj)))
  8.       (t(setq kj(cons x kj)))
  9. )(setq i(1+ i));cond end
  10.        )lst
  11.       )(reverse kj)
  12.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 167个

财富等级: 日进斗金

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

使用道具 举报

发表于 2014-10-29 09:32:26 | 显示全部楼层
(defun t2(lst a b / i kj)
  (setq i 0 kj nil)
  (foreach m lst
    (cond
      ((= i (1- a))(setq kj(cons(nth (1- b) lst) kj)))
      ((= i (1- b))(setq kj(cons(nth (1- a) lst) kj)))
      (t(setq kj(cons m kj)))
      
    );cond end
    (setq i(1+ i))   
  );end foreach
(reverse kj)
);end defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-2-15 07:09:28 | 显示全部楼层
;;得到表中重複次數 及 刪除重複後的表
:@
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 13:12 , Processed in 0.225442 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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