4
A
回答
0
我的最終解決方案:
(define index
(lambda (cislo l)
(if (equal? (car l) cislo) 0 (+ 1 (index cislo (cdr l))))))
(define map-index-pred
(lambda (pred? f l)
(foldr (lambda (x y)
(if (pred? (index x l))
(cons (f x) y) (cons x y))) '() l)))
+0
您的索引方法不是尾遞歸。大列表可能會帶來問題。 –
8
5
以下是最明顯的解決方案,我能想出:
(define (get-list-index l el)
(if (null? l)
-1
(if (= (car l) el)
0
(let ((result (get-list-index (cdr l) el)))
(if (= result -1)
-1
(1+ result))))))
該解決方案在很大程度上是相同的作爲merriav的,除了我在最後添加了一個let以便遞歸調用不會不必要地重複(以書面代碼或執行)。
接受的解決方案似乎沒有考慮空列表或列表中不包含正在尋找的元素。
0
答案是更容易比你們預期的,也沒有遞歸:)
簡單的功能,如果你確信該元素在列表中
(define element-index
(lambda (elemento lista)
(- (length lista) (length (memv elemento lista)))))
如果你考慮的情況下元素可能不在列表中。返回false
如果沒有找到
(define element-index
(lambda (elemento lista)
(if (eqv? (list? (memv elemento lista)) #t)
(- (length lista) (length (memv elemento lista)))
false
)
))
最終結果:
> (element-index 2 '(2 3 4 5))
0
> (element-index 4 '(2 3 4 5))
2
> (element-index 6 '(2 3 4 5))
false
2
你可以使用反向,成員,長度和CDR如下實施指數:
(define (index a b)
(let [(tail (member a (reverse b)))]
(and tail (length (cdr tail))))
0
下面的代碼實現了目標:
(define (getpos element lst)
(let loop ([counter 0] [temp lst])
(if (= element (car temp)) counter
(loop (+ counter 1) (cdr temp)))))
0
如果你不需要擔心元素不在列表中的情況下,下面的代碼可能是最短的版本。 (如果元素不在列表中,則會發生異常。)
(define (element-index e lst)
(cond [(eqv? e (car lst)) 0]
[else (+ (element-index e (cdr lst)) 1)])))
否則,使用下面的代碼:
(define element-index
(letrec
([element-index-helper
(lambda (e lst index)
(cond [(null? lst) #f]
[(eqv? e (car lst)) index]
[else (element-index-helper e (cdr lst) (+ index 1))]))])
(lambda (e lst)
(element-index-helper e lst 0))))
例子:
> (element-index 'a '(a b c))
0
> (element-index 'b '(a b c))
1
> (element-index 'c '(a b c))
2
> (element-index 'd '(a b c))
#f
相關問題
- 1. 查找元素的索引中列出
- 2. 使用列表元素的總和查找列表的索引
- 3. 在Python中查找列表中匹配元素的索引
- 4. 在Python中查找列表中的元素索引
- 5. 查找部分字典元素的索引列表中的
- 6. 在Haskell的列表中查找元素的索引?
- 7. 如何查找Python列表中元素的索引?
- 8. 查找JQuery UI拖放後列表中元素的索引
- 9. 查找Groovy列表中元素的所有索引
- 10. 查找列表中的最大元素及其索引 - Prolog
- 11. 如何查找列表中最大/最小元素的索引?
- 12. 查找方案列表中的元素索引
- 13. 查找列表中元素的索引scala
- 14. 查找嵌套列表中元素的索引?
- 15. 查找排序列表中元素的索引
- 16. ElementTree元素索引查找
- 17. 查找矩陣中元素的索引
- 18. 查找出現在另一個列表中的列表元素的索引
- 19. 找到元素中元素的索引
- 20. 查找元素的索引子子列表
- 21. Scheme - 查找列表元素出現的所有索引
- 22. 查找無環陣列中的相同元素的索引
- 23. 查找列表中的列隊元素
- 24. 查找陣列中的元素列表
- 25. Python - 索引列表中的元素
- 26. Haskell中列表元素的索引
- 27. 列表中的「多個」索引元素
- 28. 查找來自IQueryable的元素索引
- 29. 查找數組元素的索引
- 30. 查找具有z索引的元素
您是否嘗試過的東西?另外,你使用哪種語言? – looper
方案,我有這: (定義地圖索引預解碼值 (拉姆達(預解碼值FL) (foldr相似(拉姆達(XY) (如果(預解碼值X) (利弊(FX)Y) (? (map-index-pred odd?sqr'(2 3 4 5))) (map-index-pred(lambda(i)( kelly