明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1210|回复: 9

[源码] 数据转置

[复制链接]
发表于 2025-7-2 20:23:29 | 显示全部楼层 |阅读模式


  1. (defun $shu-ju-zhuan-zhi$ (d lst / a b i ks ljs old old-cdr)
  2.           ;数据转置
  3.   (while (setq a (car d))
  4.     (setq i 1)
  5.     (while (and a)
  6.       (setq b (car a))
  7.       (setq old-cdr nil)
  8.       (setq old (assoc i ks))
  9.       (and old (setq old-cdr (cdr old)))
  10.       (setq old-cdr (cons b old-cdr))
  11.       (and old (setq ks (vl-remove old ks)))
  12.       (setq ks (cons (cons i old-cdr) ks))
  13.       (setq i (1+ i))
  14.       (setq a (cdr a))
  15.     )
  16.     (setq d (cdr d))
  17.   )
  18.   (setq
  19.     ks (vl-sort  ks
  20.     (function (lambda (e1 e2) (< (car e1) (car e2))))
  21.        )
  22.   )
  23.   (setq d (mapcar 'cdr ks))
  24.   d
  25. )


感谢  qr[q3_2006]测试

评分

参与人数 1明经币 +1 收起 理由
1028695446 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

 楼主| 发表于 2025-7-4 22:54:07 | 显示全部楼层
llsheng_73 发表于 2025-7-3 13:56
数据应该有一定的使用场景,如果子项缺失可能导致数据失真(无法确定缺失的项是哪几个项),这样的数据处 ...

我开发空间避让用到了
回复 支持 1 反对 0

使用道具 举报

发表于 2025-7-2 21:02:36 | 显示全部楼层
杜老师,应该上一个示例用法。
回复 支持 反对

使用道具 举报

发表于 2025-7-2 22:44:52 | 显示全部楼层
Bao_lai 发表于 2025-7-2 21:02
杜老师,应该上一个示例用法。

lst没有用上,
_$ ($shu-ju-zhuan-zhi$ '((1 2 3) (4 5 6)) t)
((4 1) (5 2) (6 3))
_$
回复 支持 反对

使用道具 举报

发表于 2025-7-2 22:53:51 | 显示全部楼层
感觉和这个一样的功能
(apply 'mapcar (cons 'list (reverse '((1 2 3) (4 5 6)(7 8 9)))))
回复 支持 反对

使用道具 举报

发表于 2025-7-2 22:54:20 | 显示全部楼层
一句代码的事
  1. (Defun Transpose (l)
  2.   (apply 'mapcar (cons 'list l))
  3. )
复制代码
回复 支持 反对

使用道具 举报

发表于 2025-7-2 23:06:10 | 显示全部楼层
tigcat 发表于 2025-7-2 22:44
lst没有用上,
_$ ($shu-ju-zhuan-zhi$ '((1 2 3) (4 5 6)) t)
((4 1) (5 2) (6 3))

转置出来竟然倒序?应该((1 4)(2 5)(3 6))才是正确的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-3 12:52:20 | 显示全部楼层
tigcat 发表于 2025-7-2 22:53
感觉和这个一样的功能
(apply 'mapcar (cons 'list (reverse '((1 2 3) (4 5 6)(7 8 9)))))

每个表内的元素数量个数不等,试试
回复 支持 反对

使用道具 举报

发表于 2025-7-3 13:56:12 | 显示全部楼层
dcl1214 发表于 2025-7-3 12:52
每个表内的元素数量个数不等,试试

数据应该有一定的使用场景,如果子项缺失可能导致数据失真(无法确定缺失的项是哪几个项),这样的数据处理前应该检查,或者处理时丢弃无意义的数据,保留它反倒不知道它是怎么回事了
比如($shu-ju-zhuan-zhi$ '((1 2 ) (4 5 3)) t)和($shu-ju-zhuan-zhi$ '((1 2 3) (4 5)) t)返回结果是一样的((4 1) (5 2) (3)),这时只知道(3)这是因数缺项了,但不知道到底是哪个位置缺失的,倒不如直接丢掉省事
回复 支持 反对

使用道具 举报

发表于 2025-7-3 16:20:03 | 显示全部楼层
llsheng_73 发表于 2025-7-3 13:56
数据应该有一定的使用场景,如果子项缺失可能导致数据失真(无法确定缺失的项是哪几个项),这样的数据处 ...

可能大佬有自己要用到的特殊场景吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 07:53 , Processed in 0.150814 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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