黄翔 发表于 2024-9-18 11:44:28

表处理问题



表'( (1 2 3)(4 5 6) (7 8 9) ...) 到
'((1 4 7)   (2 5 8) (3 6 9) ...)有什么简单的写法吗?

tryhi 发表于 2024-9-18 12:00:41

一个经典的语句,能读懂就算入门了
(setq lst '( (1 2 3)(4 5 6) (7 8 9)))
(apply 'mapcar (cons 'list lst))

376394482 发表于 2024-9-18 16:03:59

tryhi 发表于 2024-9-18 12:00
一个经典的语句,能读懂就算入门了
(setq lst '( (1 2 3)(4 5 6) (7 8 9)))
(apply 'mapcar (cons 'lis ...

换个栗子,
(setq lst '(("a" "b" "c" ) ("d" "e" "f")("g" "h" "i")))
(apply 'mapcar (cons 'strcat lst))
返回:("adg" "beh" "cfi")

(setq lst '((1 2 3 ) (4 5 6)(7 8 9)))
(apply 'mapcar (cons '+ lst))
返回:(12 15 18)
这样就清晰了。

aws 发表于 2024-9-19 11:21:43

376394482 发表于 2024-9-18 16:03
换个栗子,
(setq lst '(("a" "b" "c" ) ("d" "e" "f")("g" "h" "i")))
(apply 'mapcar (cons 'strca ...

(cons 'strcat lst)
我觉得比较难理解的是上面这个,居然返回下面这个,为啥那个'没了?
(STRCAT ("a" "b" "c") ("d" "e" "f") ("g" "h" "i"))
然后,没有了那个 '居然也被mapcar识别了!
这个'的消失和显示,对于理解至关重要

ymcui 发表于 2024-9-18 11:48:26

(mapcar '(lambda (a b c) (list a b c)) '(1 2 3) '(4 5 6) '(7 8 9))

ymcui 发表于 2024-9-18 14:07:21

yanshengjiang 发表于 2024-9-18 14:18:02

tryhi 发表于 2024-9-18 12:00
一个经典的语句,能读懂就算入门了
(setq lst '( (1 2 3)(4 5 6) (7 8 9)))
(apply 'mapcar (cons 'lis ...

虽然看不懂,但还是觉得很厉害。
命令: (setq lst '( (1 2 3)(4 5 6) (7 8 9)(10 11 12)))
((1 2 3) (4 5 6) (7 8 9) (10 11 12))

命令: (apply 'mapcar (cons 'list lst))
((1 4 7 10) (2 5 8 11) (3 6 9 12))

qazxswk 发表于 2024-9-18 19:10:39

tryhi 发表于 2024-9-18 12:00
一个经典的语句,能读懂就算入门了
(setq lst '( (1 2 3)(4 5 6) (7 8 9)))
(apply 'mapcar (cons 'lis ...

唉,看样子,我还在LISP大门口徘徊,没有入门。

Bao_lai 发表于 2024-9-18 20:58:22

tryhi 发表于 2024-9-18 12:00
一个经典的语句,能读懂就算入门了
(setq lst '( (1 2 3)(4 5 6) (7 8 9)))
(apply 'mapcar (cons 'lis ...

感觉像是转置

寒潮大冬瓜 发表于 2024-9-19 08:15:01

yanshengjiang 发表于 2024-9-18 14:18
虽然看不懂,但还是觉得很厉害。
命令: (setq lst '( (1 2 3)(4 5 6) (7 8 9)(10 11 12)))
((1 2 3)...


(apply 'mapcar(cons '+ '((1 2 3 )(4 5 6)(7 8 9)(17 28 39))))
返回:(29 43 57)
1+4+7+17=29
2+5+8+28=43
3+6+9+39=57
我这个菜鸟在慢慢领悟!

寒潮大冬瓜 发表于 2024-9-19 08:16:14

本帖最后由 寒潮大冬瓜 于 2024-9-19 08:44 编辑

命令: (apply 'mapcar(cons '+ '((1 2 3 )(4 5 6)(7 8 9)(17 28 39))))
(29 43 57)
命令: (apply 'mapcar(cons '- '((1 2 3 )(4 5 6)(7 8 9))))
(-10 -11 -12)
命令: (apply 'mapcar(cons '* '((1 2 3 )(4 5 6)(7 8 9))))
(28 80 162)
命令: (apply 'mapcar(cons '/ '((1027 2031 3036 )(4 5 6)(7 8 9))))
(36 50 56)
命令: (apply 'mapcar(cons '/ '((1027 2031 3036 )(41 51 62)(7 8 9))))
(3 4 5)
命令: (apply 'mapcar(cons '/ '((1027 2031 3036 )(41 51 62)(71 82 91))))
(0 0 0)

除法→似乎→不能有小数点?

页: [1] 2
查看完整版本: 表处理问题