scheme - 将列表替换为列表列表
问题描述
如何构建一个接收列表并构建 2 个列表的函数,其中第一个列表是偶数,另一个列表是奇数?
对于输入: (fun '(1 2 3 4 5 6))
输出将是:((2 4 6) (1 3 5))
.
解决方案
有一个内置的,只需使用分区并提供正确的谓词。其余代码仅用于捕获返回值并构建输出列表:
(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))
推荐阅读
- haskell - 为什么“变量不在范围内”
- html - 如何在六边形之间添加更多填充而不失去响应能力?
- ruby-on-rails - 替换 ruby 切片元素子集的键名
- django - 为什么我的服务器会产生两个线程来响应一个 Http POST?
- c - 当您不想传递任何变量时,您可以在 C 中使用可变长度参数函数吗?
- scala - 将案例类字段与scala中另一个案例类的子字段进行比较
- angular - mat-select:如何在不滚动的情况下显示所有选项?
- c - 为什么子进程中的 execlp 不会将任何内容返回到标准输出?
- node.js - SequelizeDatabaseError:带有时区的时间戳类型的无效输入语法:“无效日期”
- c++ - 找不到 -lbgi 和 ld 返回 1 退出状态错误