乐筑天下

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

[编程交流] 在certa的列表1中插入列表2

[复制链接]
gsc

33

主题

90

帖子

57

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-5 15:41:54 | 显示全部楼层 |阅读模式
我有两个列表:
列表1(0.0-0.196738 0.0 0.196738 0.0 0.0)
列表2(-0.059895 0.120221-0.059895 0.0)
 
我想在列表1的某个位置插入列表2:
新列表(0.0-0.196738 0.0-0.059895 0.120221-0.059895 0.0 0.196738 0.0 0.0)
在这种情况下,在位置nth 3处
 
我该怎么做?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 15:53:04 | 显示全部楼层
你好
 
举个例子,让你了解这个过程:
 
  1. (setq list1 '(0.0 -0.196738 0.0 0.196738 0.0 0.0)
  2.      list2 '(-0.059895 0.120221 -0.059895 0.0)
  3. )
  4. (setq position 3)
  5. (setq run 0)
  6. (foreach item list1
  7. (if (= (setq run (1+ run)) position)
  8.    (foreach element list2
  9.      (setq lst (cons element lst))
  10.    )
  11.    (setq lst (cons item lst))
  12. )
  13. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:06:19 | 显示全部楼层
如果你愿意的话,再来一杯。
 
  1. (setq pos 3)
  2. (mapcar '(lambda (u) (if (= (length lst) pos) (mapcar '(lambda (x) (setq lst (cons x lst))) list2)
  3.                       (setq lst (cons u lst))))
  4.        list1)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:21:05 | 显示全部楼层
例如:
  1. (defun foo ( new pos lst / tmp )
  2.    (repeat pos (setq tmp (cons (car lst) tmp) lst (cdr lst)))
  3.    (append (reverse tmp) new lst)
  4. )
  1. _$ (setq l1 '(0 1 2 3 4 5))
  2. (0 1 2 3 4 5)
  3. _$ (setq l2 '("a" "b" "c"))
  4. ("a" "b" "c")
  5. _$ (foo l2 3 l1)
  6. (0 1 2 "a" "b" "c" 3 4 5)
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 16:26:01 | 显示全部楼层
递归解
  1. (defun inslist (l1 n l2 / f)
  2. (defun f (l n)
  3.    (if
  4.      (and l (> n 0))
  5.      (cons (car l) (f (cdr l) (1- n)))
  6.      (append l2 l)
  7.    )
  8. )
  9. (f l1 n)
  10. )

 
  1. (setq l1 '(0.0 -0.196738 0.0 0.196738 0.0 0.0)
  2.      l2 '(-0.059895 0.120221 -0.059895 0.0)
  3. )
  4. (inslist l1 3 l2) -> (0.0 -0.196738 0.0 -0.059895 0.120221 -0.059895 0.0 0.196738 0.0 0.0)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:40:37 | 显示全部楼层
或者,没有子功能-
  1. (defun foo ( new pos lst )
  2.    (if (and (< 0 pos) lst)
  3.        (cons (car lst) (foo new (1- pos) (cdr lst)))
  4.        (append new lst)
  5.    )
  6. )
回复

使用道具 举报

gsc

33

主题

90

帖子

57

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-5 16:43:03 | 显示全部楼层
Thanx,所有示例都有效!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-9 19:19 , Processed in 0.541337 second(s), 66 queries .

© 2020-2025 乐筑天下

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