<分区>
我想实现一个函数来计算列表中元素出现的次数。
函数调用是这样的:
(count '(a a x a 11 11 a 11 a))
函数输出应该是(对列表):
( (a . 5) (x . 1) (11 . 3) )
感谢您提供有关如何以最佳方式实现计数程序的建议。
<分区>
我想实现一个函数来计算列表中元素出现的次数。
函数调用是这样的:
(count '(a a x a 11 11 a 11 a))
函数输出应该是(对列表):
( (a . 5) (x . 1) (11 . 3) )
感谢您提供有关如何以最佳方式实现计数程序的建议。
最佳答案
“最佳”取决于您的需求和限制;这是一个使用 Racket 的内置过程的示例实现,它很短但对于大型列表可能很慢:
(define (mycount lst)
(map
(lambda (e) (cons e (count (curry eqv? e) lst)))
(remove-duplicates lst)))
然后
> (mycount '(a a x a 11 11 a 11 a))
'((a . 5) (x . 1) (11 . 3))
如果您能更具体地说明您的限制条件,那么我们可能会更好地帮助您。
关于方案:列表计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544996/