列表的作用通常是將相同種類的物體放到一起,比如:
我們去超市買的東西,買了10個蘋果,3個牛奶,1本書
一個商品就是列表中的一個元素,那麼我們用列表來表示一下
> ItemList = [{apple, 10}, {milk, 3}, {book, 1}].
[...]
來建立列表列表可以通過
[T|H]
,這種結構來拼接列表,
T
:被稱爲表頭(head)
,表頭可以是任何型別的數據
H
:被稱爲表尾(tail)
,表尾必須是列表
剛剛我們已經去超時買了一些東西,在回家途中,家人說:「回家的時候,順道再買兩瓶可樂和一個西瓜」
> ItemList1 = [{apple, 10}, {milk, 3}, {book, 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}]
回家的途中路邊沒有賣西瓜的,但是去小店中買可樂的時候,發現有西瓜,所以我們直接在商店裏一次買了1個西瓜、2瓶可樂
> ItemList2 = [[{watermelon,1},{coke,2}]|ItemList1].
[{coke,2}, {watermelon,1}, {apple, 10}, {milk, 3}, {book, 1}]
提取時,同樣用到了拼接列表
[T|H]
的概念,然後通過模式匹配
把裏邊的數據到變數中
現在我們買完東西到家了,把東西從一個大袋子裡往出拿
> ItemList1 = [{coke,2}, {watermelon,1}, {apple, 10}, {milk, 3}, {book, 1}].
[{coke,2}, {watermelon,1}, {apple, 10}, {milk, 3}, {book, 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}]
...
假設我們每次從袋子裏邊拿出兩種或更多物品
> 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}]
有了上面的基礎,肯定能理解了。至於如何怎麼取出剩餘的物品,和上面同理