首页 > 解决方案 > 将列表替换为列表列表

问题描述

如何构建一个接收列表并构建 2 个列表的函数,其中第一个列表是偶数,另一个列表是奇数?

对于输入: (fun '(1 2 3 4 5 6))
输出将是:((2 4 6) (1 3 5)).

标签: schemeracket

解决方案


有一个内置的,只需使用分区并提供正确的谓词。其余代码仅用于捕获返回值并构建输出列表:

(define (my-partition lst)
  (let-values ([(evens odds) (partition even? lst)])
    (list evens odds)))

例如:

(my-partition '(1 2 3 4 5 6))
=> '((2 4 6) (1 3 5))

推荐阅读