木兰编程语言入门教程之五——数据结构

本教程不求全面,各个方面点到即止。目标是尽快对木兰编程语言的功能有基本的了解。

之前的章节:

  • 一、浅介
  • 二、控制走向
  • 三、函数和类型
  • 四、模块

五、数据结构

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>


分享到:


相關文章: