Thank you very much for all replies !
Tqvm Lee Mac, now I realised that I should not use (setq lst2 (cons x lst2)) (in line 13), and then add apply 'append. And you show me to reduce the use of variable.
After many times trying, I found a simpler way using foreach:
(defun ds2lst
(s
/ x pos d lst
) )
)
)
)
)
(ds2lst "3*3000,2500,2*2000")
;("3000" "3000" "3000" "2500" "2000" "2000")