木蘭編程語言入門教程之五——數據結構

本教程不求全面,各個方面點到即止。目標是儘快對木蘭編程語言的功能有基本的瞭解。

之前的章節:

一、淺介二、控制走向三、函數和類型四、模塊

五、數據結構

5.1 列表

列表操作,包括計數、搜索、倒序、添加、排序,等等。

<code>> fruits = ['橙子', '蘋果', '梨子', '香蕉', '獼猴桃', '蘋果', '香蕉']
> fruits.count('蘋果')
2
> fruits.count('柑橘')
0
> fruits.index('香蕉')
3
> fruits.index('香蕉', 4)
6
> fruits.reverse()
> fruits
[香蕉, 蘋果, 獼猴桃, 香蕉, 梨子, 蘋果, 橙子]
> fruits.append('葡萄')
> fruits
[香蕉, 蘋果, 獼猴桃, 香蕉, 梨子, 蘋果, 橙子, 葡萄]
> fruits.sort()
> fruits
[梨子, 橙子, 獼猴桃, 蘋果, 蘋果, 葡萄, 香蕉, 香蕉]
> fruits.pop()
香蕉/<code>

用列表實現隊列,可以用collections.deque:

<code>> using deque in collections
> queue = deque(['張三', '李四', '王五'])
> queue.append("小紅")


> queue.popleft()
張三
> queue.popleft()
李四
> queue
deque(['王五', '小紅'])/<code>

創建列表可以簡化。相比這樣建平方數列表:

<code>> squares = []
> for n in 0..10 {
>> squares.append(n^2)
>> }
> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]/<code>

可以對數列各項應用匿名函數生成,單行即可:

<code>> list(map(n -> n^2, 0..10))/<code>

5.2 字典

基本操作:

<code>> phone = {'小明': 1234, '小紅': 4321}
> phone['小明'] = 1357
> phone
{小明: 1357, 小紅: 4321}
> phone['大黃'] = 2468
> phone
{小明: 1357, 小紅: 4321, 大黃: 2468}
> list(phone)
[小明, 小紅, 大黃]/<code>

5.3 循環

遍歷字典:

<code>> for k, v in phone.items() {
>> println(k, v)
>> }
小明 1357
小紅 4321
大黃 2468
>/<code>

遍歷序列時,可以獲取索引號:

<code>> for i, v in enumerate(['小', '中', '大']) {
>> println(i, v)
>> }
0 小
1 中
2 大/<code>

用zip同時遍歷多個序列:

<code>> for q, a in zip(['名', '出身'], ['木蘭', '貧寒']) {
>> println('{0}?{1}。'.format(q, a))
>> }
名?木蘭。
出身?貧寒。/<code>