erlang (Lists 操作模块)学习笔记

all

1> lists:all(fun(X)->X<4 end,[1,2,3]).
true
2> lists:all(fun(X)->X<4 end,[1,2,3,4]).
false

   all(Pred, List)-> boolean()

 如果 Pred(Elem) 对 List 中的所有元素 Elem 返回 true,则返回 true,否则返回 false。Pred 函数必须返回布尔值。

any

3>lists:any(fun(X)->X<4 end,[1,2,3,4]).
true
4>lists:any(fun(X)->X<4 end,[4,5]).    
false

 all(Pred, List)-> boolean()

如果 Pred(Elem) 对列表中的至少一个元素 Elem 返回 true,则返回 true。Pred 函数必须返回一个 布尔。

append

5> lists:append([[1, 2, 3], [a, b], [4, 5, 6]]).
[1,2,3,a,b,4,5,6]
6> lists:append("abc", "def").
"abcdef"

append(ListOfLists) -> List1

返回一个列表,其中追加了 ListOfLists 的所有子列表。

append(List1, List2) -> List3

返回一个新列表 List3,该列表由 List1 的元素后跟 List2 的元素。

concat

7> lists:concat([doc, '/', file, '.', 3]).
"doc/file.3"

concat(事物)-> string()

连接事物元素的文本表示形式。Things 的元素可以是原子、整数、浮点数或字符串。

delete

40> lists:delete(1,[1,2,3,4]).                          
[2,3,4]
41> lists:delete(1,[2,3,4]).  
[2,3,4]

delete(Elem, List1) -> List2

返回 List1 的副本,其中第一个元素 匹配的 Elem 将被删除,如果有这样的 元素。

droplast

8> lists:droplast([1,2,3,4]).               
[1,2,3]
9> lists:droplast([]).       
** exception error: no function clause matching lists:droplast([]) (lists.erl, line 218)

droplast(列表) -> 初始化列表

删除 List 的最后一个元素。该列表是 为非空,否则函数崩溃并出现function_clause。

dropwhile

10> lists:dropwhile(fun(X)->X<4 end,[1,2,3,4,5,6,7]).
[4,5,6,7]

 dropwhile(Pred, List1) -> List2

从 List1 中删除元素 Elem,而 Pred(Elem) 返回 true 和 返回剩余列表。Pred 函数必须返回一个 布尔。

duplicate

11> lists:duplicate(5,hello).                        
[hello,hello,hello,hello,hello]

 duplicate(N, Elem) ->列表

返回包含术语 Elem 的 N 个副本的列表。

filter

13> lists:filter(fun(X)->X<4 end,[1,2,3,4,5,6,7,8]).
[1,2,3]

filter(Pred, List1) -> List2

List2 是 List1 中 Elem 的所有元素的列表,Pred(Elem) 为其返回 true。 Pred 函数必须返回布尔值.

filtermap

14> lists:filtermap(fun(X)->X<4 end,[1,2,3,4,5,6,7,8]).
[1,2,3]
15> lists:filtermap(fun(X) -> case X rem 2 of 0 -> {true, X div 2}; _ -> false end end, [1,2,3,4,5]).
[1,2]

filtermap(Fun, List1) -> List2

 连续调用 Fun(Elem) 元素 Elem of List1.Fun/1 必须返回布尔值或元组 {true, Value}。该函数返回 元素,其中 Fun 返回一个新值,其中 值 true 与 {true, Elem} 同义。

flatlength

16> lists:flatlength([1,[1,2,[3,4,8]],3,4,5,6]).                                
10     

 flatlength(DeepList)-> Integer() >= 0

等效于 length(flatten(DeepList)),但 效率更高。

flatmap

17>  lists:flatmap(fun(X)->[X,X] end, [a,b,c]).
[a,a,b,b,c,c]

 flatmap(Fun, List1) -> List2

将函数从 A s 转换为 B的列表,以及 A的列表 (List1),并通过将函数应用于 List1 中的每个元素并附加结果列表来生成 B列表。

flatten

18> lists:flatten([1,[1,2,[3,4,8]],3,4,5,6]). 
[1,1,2,3,4,8,3,4,5,6]
19> lists:flatten([1,[1,2,[3,4,8]],3,4,5,6],[8,34,11]).
[1,1,2,3,4,8,3,4,5,6,8,34,11]

 flatten(DeepList) ->列表

返回 DeepList 的平展版本。

flatten(DeepList, tail) ->列表

返回 DeepList 的扁平化版本,并追加了 tail Tail。

foldl 和 fold

20> lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
15
21> lists:foldl(fun(X, Prod) -> X * Prod end, 1, [1,2,3,4,5]).
120
22> P = fun(A, AccIn) -> io:format("~p ", [A]), AccIn end.
#Fun<erl_eval.43.65746770>
23> lists:foldl(P, void, [1,2,3]).
1 2 3 void
24> lists:foldr(P, void, [1,2,3]).
3 2 1 void

 foldl(Fun, Acc0, List) -> Acc1

在列表的连续元素 A 上调用 Fun(Elem, AccIn),开始 使用 AccIn == Acc0。Fun/2 必须返回一个新的累加器,它是 传递到下一个调用。该函数返回 蓄能器。如果列表为 空。

foldr(Fun, Acc0, List) -> Acc1

像foldl/3一样,但 列表从右到左遍历。

foldl/3 是尾递归的,通常优于 foldr/3。

join

25> lists:join(x, [a,b,c]).
[a,x,b,x,c]
26> lists:join(x, [a]).    
[a]
27> lists:join(x, []). 
[]

join(Sep, List1) -> List2

在 List1 中的每个元素之间插入 Sep。没有 对空列表和单一实例列表的影响。

keydelete

28> lists:keydelete(1,1,[{1,hello},{2,key},{3,value}]).
[{2,key},{3,value}]
29> lists:keydelete(1,1,[{2,key},{3,value}]).          
[{2,key},{3,value}]

keydelete(Key, N, TupleList1) -> TupleList2

返回 TupleList1 的副本,其中第一个 出现第 N个元素比较的元组 等于 Key,如果存在这样的元组,则删除。

keyfind

30> lists:keyfind(1,1,[{1,hello},{2,key},{3,value}]).  
{1,hello}
31> lists:keyfind(1,1,[{2,key},{3,value}]).          
false

keyfind(Key, N, TupleList) ->元组 |假

在元组 TupleList 列表中搜索 第 N个元素比较等于 Key 的元组。 如果找到这样的元组,则返回元组, 否则为 false。

keymap

32> Fun = fun(Atom) -> atom_to_list(Atom) end.
#Fun<erl_eval.44.65746770>
33> lists:keymap(Fun, 2, [{name,jane,22},{name,lizzie,20},{name,lydia,15}]).
[{name,"jane",22},{name,"lizzie",20},{name,"lydia",15}]

 keymap(Fun, N, TupleList1) -> TupleList2

返回一个元组列表,其中,对于 TupleList1 中的每个元组,元组的第 N个元素 Term1 已替换为调用 Fun(Term1) 的结果。

keymember

34> lists:keymember(1,1,[{1,hello},{2,key},{3,value}]).                     
true
35> lists:keymember(1,1,[{2,key},{3,value}]).          
false

keymember(Key, N, TupleList) ->boolean()

如果 TupleList 中有一个元组,其第 N个元素,则返回 true compares 等于 Key,否则为 false。

 

keymerge

36> lists:keymerge(1,[{2,key},{3,value}],[{1,hello},{2,tuple},{3,none}]).
[{1,hello},{2,key},{2,tuple},{3,value},{3,none}]

keymerge(N, TupleList1, TupleList2) -> TupleList3

返回通过合并 TupleList1 和 TupleList2 形成的排序列表。 合并是在每个元素的第 N个元素上执行的 元。在计算之前,必须对 TupleList1 和 TupleList2 进行键排序 此功能。当两个元组比较相等时,在 TupleList1 中的元组之前选取 TupleList2 中的元组。

keyreplace

38> lists:keyreplace(2,1,[{2,key},{3,value}],{1,hello}). 
[{1,hello},{3,value}]
39> lists:keyreplace(1,1,[{2,key},{3,value}],{1,hello}).
[{2,key},{3,value}]

keyreplace(Key, N, TupleList1, NewTuple) -> TupleList2

 返回 TupleList1 的副本,其中第一个 出现一个 T 元组,其第 N个元素 如果存在这样的元组 T,则将等于 Key 替换为 NewTuple。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/640293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB前端CSS常见样式以及各种简单样式

CSS常见样式 CSS语法结构 选择器表达式{key:value;....... }margin、padding margin&#xff1a;外边距 padding&#xff1a;内边距 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{mar…

java实现将集合数据导入excel表格之竖向

这里使用的是apache.poi&#xff0c;当然如果使用easyExcel也可以实现 括号是EasyExcel官网&#xff08;EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel&#xff09; 找到填充&#xff0c;都会有相对应的demo实列 下面是我写的apache.poi实现代码 public static vo…

初学python系列: pandas操作excel

媳妇工作中经常用到excel处理&#xff0c;想用python处理excel更高效&#xff0c;所以自学了python&#xff0c;觉得python比Java还是简单多了&#xff0c;没有变量类型声明&#xff0c;比Java也就多了元组&#xff0c;各种库很丰富。 需求是&#xff1a; 汇总两个excel中 列&…

2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍

28-第三天课程介绍_哔哩哔哩_bilibili CSS 第一天 1.1 引入方式 1.2 选择器 1.3 画盒子 div 独占一行 1.4 文字控制 div 外层 1.5 调试工具 F12 1.5 综合案例 一 新闻详情 1.6 综合案例 二 CSS 简介 CSS 第二天 2.1 复合选择器 2.2 伪类选择器 2.3 CSS 特性 2.4 Emmet 写法 2.5…

JavaEE 网络原理

JavaEE 网络原理 文章目录 JavaEE 网络原理1. 网络互连1.1 局域网LAN1.2 广域网WAN 2. 网络通信基础2.1 IP地址2.2 端口号 3. 网络协议3.1 概念3.2 五元组3.3 协议分层3.4 TCP/IP 五层模型3.5 封装和分用 1. 网络互连 随着时代的发展&#xff0c;需要多个计算机协同工作来完成…

砝码法律咨询公司:创始人的智慧与团队的力量

在法律服务领域,有这样一支团队,他们以其独特的视角和专业的服务,正在逐渐改变着人们对家庭法律服务的认识。他们就是天津砝码法律咨询公司的团队,由一群对法律充满热情的专业人士组成,以其创始人的智慧为引领,致力于为家庭提供全面的法律服务。本篇新闻稿将深入介绍砝码法律的…

Pix2Pix理论与实战

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 我的环境&#xff1a; 1.语言&#xff1a;python3.7 2.编译器&#xff1a;pycharm 3.深度学习框架Pytorch 1.8.0cu111 一、引入 在之前的学习中&#xff0c;我们知道…

Haar小波下采样模块

论文原址&#xff1a;Haar wavelet downsampling: A simple but effective downsampling module for semantic segmentation - ScienceDirect 原文代码&#xff1a;HWD/HWD.py at main apple1986/HWD (github.com) 介绍 深度卷积神经网络 &#xff08;DCNN&#xff09; 通…

搞定ESD(九):静电放电之PCB设计

文章目录 一、PCB叠层设计优化ESD性能1.1 PCB叠层设计对ESD性能影响机理分析1.2 PCB叠层设计优化改善ESD问题案例二、PCB布局设计优化ESD性能2.1 PCB布局静电放电案例(一)2.2 PCB布局静电放电案例(二)三、PCB布线设计优化ESD性能3.1 环路面积最小化设计3.1.1 芯片供电电源滤…

springboot中一些注解

springboot中一些注解 1:项目启动时会去扫描启动的注解&#xff0c;一般是启动时就想要被加载的方法&#xff1a; 2:springBoot中MSApplication启动类的一些其他注解&#xff1a; EnableAsync&#xff1a;这是一个Spring框架的注解&#xff0c;它用于开启方法异步调用的功能。当…

2017年认证杯SPSSPRO杯数学建模B题(第一阶段)岁月的印记全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 跨年龄人脸识别模型的建立与分析 B题 岁月的印记 原题再现&#xff1a; 对同一个人来说&#xff0c;如果没有过改变面容的疾病、面部外伤或外科手术等经历&#xff0c;年轻和年老时的面容总有很大的相似性。人们在生活中也往往能够分辨出来两…

2.【SpringBoot3】用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

爬虫小案例—雪球网行情中心板块数据抓取

雪球网行情中心网址&#xff1a;https://xueqiu.com/hq 目标&#xff1a;市场一览板块、热股榜板块、新股预告板块、关注排行榜板块 源代码如下&#xff1a; import datetimeimport requestsheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKi…

一周时间,开发了一款封面图生成工具

介绍 这是一款封面图的制作工具&#xff0c;根据简单的配置即可生成一张好看的封面图&#xff0c;目前已有七款主题可以选择。做这个工具的初衷来自平时写文章&#xff0c;都为封面图发愁&#xff0c;去图片 网站上搜索很难找到满意的&#xff0c;而且当你要的图如果要搭配上文…

【JavaEE进阶】 关于⽇志框架(SLF4J)

文章目录 &#x1f333;SLF4j&#x1f332;⻔⾯模式(外观模式)&#x1f6a9;⻔⾯模式的定义&#x1f6a9;⻔⾯模式的优点 &#x1f343;关于SLF4J框架&#x1f6a9;不引⼊⽇志⻔⾯&#x1f6a9;引⼊⽇志⻔⾯ ⭕总结 &#x1f333;SLF4j SLF4J不同于其他⽇志框架,它不是⼀个真正…

构建高效外卖系统:技术实践与代码示例

外卖系统在现代社会中扮演着重要的角色&#xff0c;为用户提供了便捷的用餐解决方案。在这篇文章中&#xff0c;我们将探讨构建高效外卖系统的技术实践&#xff0c;同时提供一些基础的代码示例&#xff0c;帮助开发者更好地理解和应用这些技术。 1. 技术栈选择 构建外卖系统…

自动化运维神器—ansible详解

一、ansible简介 1.ansible定义 ansible是目前最受运维欢迎的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;SaltStack puppet、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功…

[Java并发基础]多进程编程

Java并发基础&#xff1a;多进程编程 在Java编程中&#xff0c;多进程编程是一种并发编程的方法&#xff0c;它允许我们同时执行多个独立的进程。每个进程都有自己的内存空间和执行环境&#xff0c;它们可以独立运行&#xff0c;相互之间不会干扰。 文章目录 Java并发基础&…

【算法详解】力扣415.字符串相加

一、题目描述 力扣链接&#xff1a;力扣415.字符串相加 给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串…

BP蓝图映射到C++笔记1

教程链接&#xff1a;示例1&#xff1a;CompleteQuest - 将蓝图转换为C (epicgames.com) 1.常用的引用需要记住&#xff0c;如图所示。 2.蓝图中可以调用C函数&#xff0c;也可以实现C函数 BlueprintImplementableEvent:C只创建&#xff0c;不实现&#xff0c;在蓝图中实现 B…