Jump to content

Insert list2 in list1 at certain position


gsc

Recommended Posts

I have 2 lists:

List1 (0.0 -0.196738 0.0 0.196738 0.0 0.0)

List2 (-0.059895 0.120221 -0.059895 0.0)

 

I want to insert List2 in List1 at a certain position:

NewList (0.0 -0.196738 0.0 -0.059895 0.120221 -0.059895 0.0 0.196738 0.0 0.0)

In this case at position nth 3

 

How do I do this?

Link to comment
Share on other sites

Hi,

 

Just an example for you comprehend the process:

 

(setq list1 '(0.0 -0.196738 0.0 0.196738 0.0 0.0)
     list2 '(-0.059895 0.120221 -0.059895 0.0)
)
(setq position 3)
(setq run 0)

(foreach item list1
 (if (= (setq run (1+ run)) position)
   (foreach element list2
     (setq lst (cons element lst))
   )
   (setq lst (cons item lst))
 )
)

Link to comment
Share on other sites

Another if you want to. :)

 

(setq pos 3)

(mapcar '(lambda (u) (if (= (length lst) pos) (mapcar '(lambda (x) (setq lst (cons x lst))) list2)
                      (setq lst (cons u lst))))
       list1)

Link to comment
Share on other sites

For example:

(defun foo ( new pos lst / tmp )
   (repeat pos (setq tmp (cons (car lst) tmp) lst (cdr lst)))
   (append (reverse tmp) new lst)
)

_$ (setq l1 '(0 1 2 3 4 5))
(0 1 2 3 4 5)
_$ (setq l2 '("a" "b" "c"))
("a" "b" "c")
_$ (foo l2 3 l1)
(0 1 2 "a" "b" "c" 3 4 5)

Link to comment
Share on other sites

A recursive solution

(defun inslist (l1 n l2 / f)
 (defun f (l n)
   (if
     (and l (> n 0))
     (cons (car l) (f (cdr l) (1- n)))
     (append l2 l)
   )
 )
 (f l1 n)
)

 

(setq l1 '(0.0 -0.196738 0.0 0.196738 0.0 0.0)
     l2 '(-0.059895 0.120221 -0.059895 0.0)
)

(inslist l1 3 l2) -> (0.0 -0.196738 0.0 -0.059895 0.120221 -0.059895 0.0 0.196738 0.0 0.0)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...