2012-05-09 6 views
8

मैं लूप स्टेटमेंट के लिए किसी दिए गए इंडेक्स में किसी सूची से किसी आइटम को प्राप्त करने का प्रयास कर रहा हूं।रैकेट भाषा में दिए गए इंडेक्स में किसी सूची से मुझे आइटम कैसे प्राप्त किया जा सकता है?

(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 
        )))))]))) 

इस मामले में, best सूची है और मैं countdown सूचकांक पर अपने मूल्य प्राप्त करने की आवश्यकता। क्या आप उस पर मेरी मदद कर सकते हैं?

+0

इंडेक्स पर लूप करने और 'सूची-रेफरी' का उपयोग करने के बजाय, सूची में केवल लूप क्यों न करें? –

+0

यह भी ध्यान रखें कि यदि आप सूची के माध्यम से यादृच्छिक पहुंच प्राप्त करते हैं, तो शायद यह आपके डेटा के लिए उचित कंटेनर प्रकार नहीं है। रैकेट (साथ ही योजना) * वेक्टर * प्रकार प्रदान करता है जो निरंतर समय यादृच्छिक पहुंच का समर्थन करता है। http://docs.racket-lang.org/guide/vectors.html – dyoo

+0

टिप्पणियों के लिए धन्यवाद। मैं रैकेट लैंग में वास्तव में नया हूं और मैं इन सब की सराहना करता हूं। – lu1s

उत्तर

18

उदाहरण:

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

देखें:

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

लेकिन आप जाँच करना चाहते हैं, तो सूची किया है और डॉन जाता है जबकि ':

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

+0

धन्यवाद, धन्यवाद! – lu1s

4

या यह अपने आप का निर्माण त्रुटि से चिंता मत करो आप यह भी कर सकते हैं:

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

क्यों पहले से ही एक बिल्टिन फ़ंक्शन क्या लिखता है? –

+1

@ लियो-द-मैनिक: आसान: यह समझने के लिए कि यह आंतरिक रूप से कैसे काम करता है और अन्य संदर्भों में अवधारणाओं का उपयोग करने में सक्षम होता है। आप इसे उत्पादन सेटिंग में नहीं करेंगे, लेकिन सीखने के उद्देश्यों के लिए यह उचित है। – Zelphir

संबंधित मुद्दे

 संबंधित मुद्दे