# Thread: Insert list2 in list1 at certain position

1. ## Insert list2 in list1 at certain position

Registered forum members do not see this ad.

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?

2. Hi,

Just an example for you comprehend the process:

Code:
```(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))
)
)```

3. Another if you want to.

Code:
```(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)```

4. For example:
Code:
```(defun foo ( new pos lst / tmp )
(repeat pos (setq tmp (cons (car lst) tmp) lst (cdr lst)))
(append (reverse tmp) new lst)
)```
Code:
```_\$ (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)```

5. A recursive solution
Code:
```(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)
)```
Code:
```(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)```

6. Or, without the subfunction -
Code:
```(defun foo ( new pos lst )
(if (and (< 0 pos) lst)
(cons (car lst) (foo new (1- pos) (cdr lst)))
(append new lst)
)
)```

7. Registered forum members do not see this ad.

Thanx, all examples work!

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts