zoukankan      html  css  js  c++  java
  • 我也学erlang(六)——列表解析

    列表解析:

      列表解析是一种无需使用fun、map、filter创建列表的一种方式。

      假设我们有一个列表L,  

    2> L=[1,2,3,4,5].

      我们要想使L加倍,可以使用前面说过的使用list:map

    1> list:map(fun(X)->2*X end,L).

      也可以使用列表解析

    4> [2*X || X<-L].
    [2,4,6,8,10]

    记号[F(x) || x<-L]代表由F(X)组成的列表,其中X从列表L中获得。

    下面这个形式就是列表解析最常见的一种形式

    [X || Qualifier1,Qualifier2……]

    其中X是表达式,Qualifier是生成器或者过滤器。生成器通常写成Patter<-ListExpr,其中ListExpr必须是一个对列表项求值的表达式。过滤器可以是一个谓词,也可以是一个布尔表达式。生成器部分也可以像过滤器一样工作

    比如

    7> [X || {a,X}<-[{a,1},{b,2},{3,4},{d,6},{a,8},"wow","abs"]].
    [1,8]

    几个例子

    1.快速排序

    -module(lib_misc).
    -export([qsort/1]).
    
    qsort([])->[];
    qsort([H|T])->qsort([X || X<-T,X<H]) ++ [H] ++ qsort([X || X<-T,X>=H]).
    11> T=[12,34,5,67,2,3,5,665,332,0].
    [12,34,5,67,2,3,5,665,332,0]
    15> lib_misc:qsort(T).             
    [0,2,3,5,5,12,34,67,332,665]
  • 相关阅读:
    hdu 3613 Best Reward 扩展kmp
    hdu 4333 Revolving Digits 扩展kmp
    poj 1904 King's Quest 强连通
    hdu 3068 最长回文 manacher
    Codeforces Round #243 (Div. 2) C. Sereja and Swaps
    poj 3680 Intervals 费用流
    两个kmp hdu 2594 & hdu 2087
    hdu 3336 count the string
    Arcgis安装要素
    JS关闭窗口而不提示
  • 原文地址:https://www.cnblogs.com/church/p/2607533.html
Copyright © 2011-2022 走看看