motee-z 发表于 2022-7-5 22:34:33

将列表转换为其他列表

请帮助如何转换此列表
(setq a'("1 2.33 6.45 8.46" "2 8.98 4.78 1.58" "3 4.51 7.12 2.35" "4 6.95 5.64 7.82"))
添加到此列表
(setq a '((1 2.33 6.45 8.46)(2 8.98 4.78 1.58)(3 4.51 7.12 2.35)(4 6.95 5.64 7.82)))

hanhphuc 发表于 2022-7-5 22:41:13

拆分列表?

7o7 发表于 2022-7-5 22:49:06

您可以使用:
(mapcar '(lambda(x) (read (strcat "(" x ")"))) a)

motee-z 发表于 2022-7-5 22:54:57

非常感谢你

Tharwat 发表于 2022-7-5 22:56:25

另一个
 

(defun 2->list (l)
(if l (setq l (cons (read (strcat "(" (car l) ")")) (2->list (cdr l)))))
)

7o7 发表于 2022-7-5 23:04:18

不客气motee-z。
@塔尔瓦特:
感谢您的选择,但在这种情况下,我认为使用mapcar比递归更容易理解。

Tharwat 发表于 2022-7-5 23:07:28

 
我确实同意你的观点。

Lee Mac 发表于 2022-7-5 23:13:52

请注意,setq表达式不需要重新定义变量“l”-
由于cons表达式是最后一个计算的表达式,因此将构造并返回该列表。

Tharwat 发表于 2022-7-5 23:18:52

 
你说得对,谢谢李花时间纠正我。

Lee Mac 发表于 2022-7-5 23:28:59

不客气
页: [1] 2
查看完整版本: 将列表转换为其他列表