文章目录
列表(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]
我们拼接了一个列表,与已买物品列表进行拼配,因为Item1
与ItemList2
是两个未赋值的变量,所以等式成立
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]