比较多个列表以制作
亲爱的编码人员:,在我成为一名优秀的lsp编码器的学习道路上,我正在尝试操作列表
有人能帮我吗?
接受此列表
(
(“圆”“6”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈”“5”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈1”“4”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈1”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈2”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈2”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
)
请参阅每个列表的第一个条目。
我如何从这个列表中创建3个新列表?
到目前为止,Equal对我不起作用
而foreach也不是 你好
我们称之为“按键分组”。
我们是指我。
编辑:哦,也许你只是想提取独特的项目,然后尝试李的独特与模糊功能。 @grrrrrrrrrrrrrrrrrrrrrrr
在尊重的意义上,而不是在不值得
我需要按键分组 别担心,
我个人更喜欢李在“按键分组”主题中提出的建议,因为它简单而简短。 此处相同:-) @Grrrrrr
除了“按键分组”之外,还有一个函数可以确定列表中是否有像我现在这样的双精度项,并将其重命名吗?
即。
圆圈在列表中有2次,我只想重命名第二个1
因此,如果我说6次相同的名字,我希望其中5个名字后面有“-1”,当然,每个名字加起来是+1
参见下面的示例
(
(“圆”“6”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-1”“5”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-2”“4”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-3”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-4”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-5”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
) 在前面张贴示例列表,在后面张贴示例列表。 之前
(
(“圆”“6”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈”“5”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈”“4”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆圈”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“不同名称”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“其他名称”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“名称”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0)
)
之后
(
(“圆”“6”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-1”“5”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-2”“4”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-3”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-4”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“圆-5”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“不同名称”“3”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“其他名称”“2”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0))
(“名称”“1”(-3.06162e-017-0.5 0.0)1.0 10(0.0 0.0)
) 也许:
(setq a
(
(lambda ( / b i ) (setq i 0)
(mapcar
'(lambda (x)
(if (= (car x) "Circle")
(if b (cons (strcat "Circle-" (itoa (setq i (1+ i)))) (cdr x))
(progn (setq b t) x)
)
x
)
); lambda
'(
("Circle" "6" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "5" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "4" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("different name" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("other name" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("name" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
)
)
)
)
) @grrrrr
谢谢,我想我可以根据自己的需要修改它,并从中学习
如果我想不出来,我会让你知道的。哈哈
给你的啤酒@grrrr
顺便提一下
在哪里可以找到有关MAPCAR和LAMBDA的更多信息?
使用这个似乎很有趣
页:
[1]
2