how use loop when list element only one

how use loop when list element only one

avinash00002002
Collaborator Collaborator
409 Views
2 Replies
Message 1 of 3

how use loop when list element only one

avinash00002002
Collaborator
Collaborator

I have some list in which has only one element, how to run loop

(("Hole2" . 18)) 

if more than one we can use

 

(repeat (setq i (1- (length lst1)))

 

but for one element it gives error.

 

Thanks,

Avinash

0 Likes
Accepted solutions (2)
410 Views
2 Replies
Replies (2)
Message 2 of 3

ВeekeeCZ
Consultant
Consultant
Accepted solution

Because you need to loop it "length-times", not len-1 times

If length of your lst1 is 1, then (1- (length lst1)) is 0, so it runs 0-times

 

(defun c:test ()
  (setq lst1 '(("Hole2" . 18)))
  (repeat (setq i (length lst1)) ; length of entire list
    (print
      (nth (setq i (1- i)) lst1) ; last index is length-1
      ))  
  (princ)
  )

 

0 Likes
Message 3 of 3

calderg1000
Mentor
Mentor
Accepted solution

Regards @avinash00002002 

When you have a single element in your list, it is not necessary to apply a loop, since in advance you can know that the position it occupies within the list is i = 0
Here I show you some examples to get the only item on your list.

 

(setq lst'(("Hole2" . 18)))

1. Option
(setq elist(nth 0 lst))

2. Option
(setq elist(car lst))

3. Option
(setq elist(last lst))

4. Option
(repeat (setq i (length lst))
(setq elist (nth (setq i(1- i)) lst)))

 

 

 


Carlos Calderon G
EESignature
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

0 Likes