美文网首页
【erlang】列表速构

【erlang】列表速构

作者: 夏澪 | 来源:发表于2019-05-29 11:01 被阅读0次

前言

列表速构是在初入门的时候就遇到过的内容,当时不甚解其意,没有深入求索,结果在前几天一个任务中需要使用,在网上一翻,资料寥寥。幸而还有一篇能用,其实稍作剖析,列表速构方法的内部结构是相当清晰的。注意,列表速构只适用于列表转列表,如果有其他需求,需要参考 lists的语法。

结构

 [ X * X || X <- [1,2,3,4,5] ]

速构的列表分为两个部分,以 || 为界限,右边为取值,左边为具体的处理方式。上面这个例子是最简单的取值, X <- [1,2,3,4,5] 代表 X 分五次处理,处理时候的值为 1,2,3,4,5 。处理方式是平方,结果为 [1,4,9,16,25].

拓展

[ {X, X * X} || X <- lists:seq(1,100), X rem 2 == 1, X rem 3 == 2, X rem 4 == 3]

列表速构的右边可以有多个条件,多个条件之间用逗号连接。列表速构的左边格式是任意的,结果会是左边的数据结构的组合列表。

[ rand:uniform(10) || _ <- lists:seq(1,10) ]  
%% lists:seq(1,10) 即 [1,2,3,4,5,6,7,8,9,10]

列表的值也可以不取,上面例子代表的是构造十次,每次构造的是一个10以内的随机数。

使用

初学的时候,leader 举过一个例子。假设有一个圆,圆心在(0,0),半径长为5,求圆上xy值均为整数的点。解决方法是:

[ {X,Y} || X <- lists:seq(-5,5), Y <- lists:seq(-5,5), X*X + Y*Y == 25].
%% 注意右边的顺序, 先用 <- 设定值的范围, 然后再设置其他限制条件

总结

重申一遍, 列表速构是 列表转列表 的方法,输入是一个列表,输出也是一个列表的场合才适用。其他场景一般使用 lists:foldl 方法,或者直接用函数处理。每一种处理方式实现本质是一样的,但速构和lists的方法会看起来更直观可读一些。

相关文章

  • 【erlang】列表速构

    前言 列表速构是在初入门的时候就遇到过的内容,当时不甚解其意,没有深入求索,结果在前几天一个任务中需要使用,在网上...

  • Erlang速览

    Windows环境下安装Erlang   在http://www.erlang.org/downloads下载安装...

  • Erlang基础

    终端 atom bool turple list 列表解析 模式匹配 变量 Erlang终端 打开Erlang终端...

  • Elixir和Erlang的资源列表

    Elixir A FREE INTRODUCTION TO ELIXIR, OTP, ECTO, AND PHOE...

  • android速构adapter神器

    (adapter神器版本将会不断更新和完善,目前已经增加支持 ViewPager,支持 multiple view...

  • SpringBoot笔记(十一)RabbitMQ

    安装Erlang RabbitMQ基于Erlang,所以得先安装Erlang http://www.erlang....

  • mac 安装 RabbitMQ

    RabbitMQ安装需要erlang环境1 下载erlang在erlang 官网http://www.erlang...

  • 安装RabbitMQ(一)

    安装Erlang (https://packages.erlang-solutions.com/erlang/)添...

  • 在linux下安装配置rabbitMQ详细教程

    安装Erlang由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。 Erlang的安装方式大概有...

  • rabbitmq安装

    安装erlang erlang依赖环境 自动安装erlang的YUM源 erlang 下载好的rabbitmq r...

网友评论

      本文标题:【erlang】列表速构

      本文链接:https://www.haomeiwen.com/subject/gldetctx.html