How do I get an item from a list at a given index in racket language?

给你一囗甜甜゛ 提交于 2019-12-05 17:08:18

问题


I'm trying to get an item from a list at a given index for a loop statement.

(define decision-tree-learning
  (lambda (examples attribs default)
    (cond
      [(empty? examples) default]
      [(same-classification? examples) (caar examples)] ; returns the classification
      [else (lambda () 
              (let ((best (choose-attribute attributes examples))
                    (tree (make-tree best))
                    (m (majority-value examples))
                    (i 0)
                    (countdown (length best)) ; starts at lengths and will decrease by 1
                  (let loop()
                    (let example-sub ; here, totally stuck now
                      ; more stuff
                      (set! countdown (- countdown 1))
                      ; more stuff
                      )))))])))

In this case, best is the list and I need to get its value at the countdown index. Could you help me on that?


回答1:


Example:

> (list-ref '(a b c d e f) 2)
'c

See:

http://docs.racket-lang.org/reference/pairs.html




回答2:


Or build this yourself:

(define my-list-ref
    (lambda (lst place)
      (if (= place 0)
          (car lst)
          (my-list-ref (cdr lst) (- place 1)))))

but if you want to check if the list is done and don't worry by error yo can do this as well:

(define my-list-ref
    (lambda (lst place)
      (if (null? lst)
          '()
          (if (= place 0)
          (car lst)
          (my-list-ref (cdr lst) (- place 1))))))


来源:https://stackoverflow.com/questions/10523361/how-do-i-get-an-item-from-a-list-at-a-given-index-in-racket-language

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!