乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 39|回复: 12

[编程交流] 组合列表

[复制链接]

3

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:20:03 | 显示全部楼层 |阅读模式
我正在努力合并两个不同的列表。比如说,列表1中的元素包含1、2、3,而列表2中的元素是B、C、D。主列表如下所示:
1 A
1 B
1 C
1 D
2 A
2 B
2 C
 
等等我想我需要使用FOREACH函数,但只是不确定。任何帮助都会很好。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:26:37 | 显示全部楼层
您可以使用nth获得每个单独的值,然后使用Strcat生成新值。
 
  1. (setq list1 (list 1 2 3 4 5 6 7))
  2. (setq list2 (list "a" "b" "c" "d" "e" "f" "g"))
  3. (setq len (length list1)) ; I would check here that list1 is same number as list2
  4. (setq x 0)
  5. (repeat len
  6. (Princ (strcat "\n" (rtos (nth x list1) 2 0) " " (nth x list2)))
  7. (setq x (+ x 1))
  8. )
回复

使用道具 举报

3

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:34:12 | 显示全部楼层
它们是不相等的列表
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 21:36:55 | 显示全部楼层
我不确定我是否理解所需的输出,因此这里有两种自适应:
 
  1. (mapcar
  2. (function
  3.    (lambda (x y) (cons x y))
  4. )
  5. '(1 1 1 1 2 2 2)
  6. '("A" "B" "C" "D" "A" "B" "C")
  7. )
  8. (mapcar
  9. (function
  10.    (lambda (x y) (list x y))
  11. )
  12. '(1 1 1 1 2 2 2)
  13. '("A" "B" "C" "D" "A" "B" "C")
  14. )

 
 
 
需要更多信息。
回复

使用道具 举报

3

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:40:33 | 显示全部楼层
  1. RANGE_LIST = [["RANGE 1" 1.0 ] ["RANGE 2" 2.0 ] ["RANGE 3" 3.0 ] ["RANGE 4" 4.0 ] ["RANGE 5" 5.0 ]]
  2. PART_SIZE_LIST = [["AC" 0.1] ["PVC" 0.5]]

 
最终结果将是一个如下所示的列表:
 
  1. MASTER_LIST = [["AC" 0.1 "RANGE 1" 1.0 ] ["AC" 0.1 "RANGE 2" 2.0 ].......

 
基本上,我想把range_列表中的每个元素添加到part_size_列表中的每个元素,在master_列表中创建一个全新的元素。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:47:41 | 显示全部楼层
试试这个,这是使用nth的变体
 
  1. (setq list1 (list 1 2 3 4 5 6 7))
  2. (setq list2 (list "a" "b" "c" "d" "e" "f" "g"))
  3. (setq len (length list1)) ; I would check here that list1 is same number as list2
  4. (setq x 0)
  5. (setq Y (- (Getint "\nEnter item Number from list2") 1))
  6. (repeat len
  7. (Princ (strcat "\n"  (rtos (nth x list1)2  0) " " (nth Y list2))) ; dont need rtos if strings
  8. (setq x (+ x 1))
  9. )
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 21:54:09 | 显示全部楼层
也许是这样的。。。
  1. (setq a '(("RANGE 1" 1.0)("RANGE 2" 2.0)("RANGE 3" 3.0)("RANGE 4" 4.0)("RANGE 5" 5.0))
  2.      b '(("AC" 0.1) ("PVC" 0.5))
  3. )
  4. (foreach x b
  5. (setq n -1)
  6. (while (setq y (nth (setq n (1+ n)) a))
  7.    (setq c (cons (append x y) c))
  8. )
  9. )
  10. (setq c (reverse c))

 
亨里克
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 21:57:42 | 显示全部楼层
也许 吧:
  1. (setq a '(("RANGE 1" 1.0)("RANGE 2" 2.0)("RANGE 3" 3.0)("RANGE 4" 4.0)("RANGE 5" 5.0))
  2.      b '(("AC" 0.1) ("PVC" 0.5))
  3. )
  1. (mapcar '(lambda ( x ) (mapcar '(lambda ( y ) (append x y)) a)) b)

或者,如果需要单个列表:
  1. (apply 'append (mapcar '(lambda ( x ) (mapcar '(lambda ( y ) (append x y)) a)) b))
回复

使用道具 举报

1

主题

475

帖子

481

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 22:00:44 | 显示全部楼层
 
 
做得好。
 
亨里克
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:05:08 | 显示全部楼层
 
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 09:09 , Processed in 1.055886 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表