【Erlang】六、基本数据类型——列表(list)

列表(list)

1. 概念

列表的作用通常是将相同种类的物体放到一起,比如:
我们去超市买的东西,买了10个苹果,3个牛奶,1本书
一个商品就是列表中的一个元素,那么我们用列表来表示一下

> ItemList = [{apple, 10},  {milk, 3}, {book, 1}].

2. 定义

  • [...] 来创建列表
  • 列表中元素可以是任何类型的数据

3. 拼接列表

定义

列表可以通过 [T|H],这种结构来拼接列表,
T:被称为表头(head),表头可以是任何类型的数据
H:被称为表尾(tail),表尾必须是列表

案例解释

刚刚我们已经去超时买了一些东西,在回家途中,家人说:“回家的时候,顺道再买两瓶可乐一个西瓜

> ItemList1 = [{apple, 10},  {milk, 3}, {book, 1}].
情景1:向列表中加入 一个元素

回家的途中看到路边有卖西瓜的,买了一个西瓜
先在列表中添加买到的西瓜

> ItemList2 = [{watermelon,1}|ItemList1].
[{watermelon,1},{apple, 10},  {milk, 3}, {book, 1}]

路过小店的时候,又买了两瓶可乐,再在列表中添加2瓶可乐

> ItemList3 = [{coke,2}|ItemList2].
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
情景2:向列表中加入 多个元素

回家的途中路边没有卖西瓜的,但是去小店中买可乐的时候,发现有西瓜,所以我们直接在商店里一次买了1个西瓜、2瓶可乐

> ItemList2 = [[{watermelon,1},{coke,2}]|ItemList1].
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]

4. 提取列表元素

定义

提取时,同样用到了拼接列表 [T|H] 的概念,然后通过 模式匹配 把里边的数据到变量中

案例解释

现在我们买完东西到家了,把东西从一个大袋子里往出拿

> ItemList1 = [{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}].
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
案例1:每次提取一个数据
> [Item1|ItemList2] = ItemList1.
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
> Item1.
{coke,2}
> ItemList2.
[{watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]

[Item1|ItemList2] 我们拼接了一个列表,与已买物品列表进行拼配,因为Item1ItemList2 是两个未赋值的变量,所以等式成立
Item1 则我们第一个取出的物品
ItemList2 则是取出了一个物品后,剩余的东西

同理,取剩下的物品时,也是一样的方法

> [Item2|ItemList3] = ItemList2.
[{watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
> [Item3|ItemList4] = ItemList3.
[{apple, 10},  {milk, 3}, {book, 1}]
...
案例2:每次提取多个数据

假设我们每次从袋子里边拿出两种或更多物品

> ItemList1 = [{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}].
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
> [Item1,Item2|ItemList2].
[{coke,2}, {watermelon,1}, {apple, 10},  {milk, 3}, {book, 1}]
> Item1.
{coke,2} 
> Item2.
{watermelon,1}
> ItemList2.
[{apple, 10},  {milk, 3}, {book, 1}]

有了上面的基础,肯定能理解了。至于如何怎么取出剩余的物品,和上面同理


5. 操作符

拼接 ++

1> [1,2,3] ++ [4,5].
[1,2,3,4,5].

移除 --

A -- B B中所有的元素从A中移除,假设一个元素在B中有N次,A的列表也只会移除N次

1> [1,2,3,a,a,4,5,a] -- [a,a].
[1,2,3,4,5,a]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值