1. 列表解析格式
- [F(X) || X <- L ]
- 表示:由 F(X) 组成的列表,其中 X 是取值来源于列表 L (F 是某个功能函数)
- [X || Qualifier1, Qualifier2, ...]
- X可以是任意一个表达式,每个限定词 (Qualifier) 可以使一个生成器或者是一个过滤器
- 生成器通常写为 Pattern <- ListExpr, 其中 ListEpr 必须是一个队列表项求职的表达式
- 过滤器可以使一个谓词 (返回true或者false的函数),也可以是一个布尔表达式
- X可以是任意一个表达式,每个限定词 (Qualifier) 可以使一个生成器或者是一个过滤器
2. 举例
- L = [1, 2, 3, 4].
- [2*X | X <-L ]. % 列表 L 中每个元素 X 乘以 2 得到的列表
- [{Name, 2*Number} || {Name, Number} <- Buy ].
- 对列表 Buy 中每个元祖中 Number 的值 乘以2
- 快速排序
- sort([]) -> [];
- sort([Pivot|T]) -> sort([X || X <-T, X<Pivot]) ++ [Pivot] ++ sort([X || X <-T, X>=Pivot]).