Before Coding [16] - JavaScript - 循环语句

3.7 循环语句

必备知识:前面课程的学习

循环语句

循环语句是一系列反复执行直到符合特定条件的命令。JavaScript 支持fordo whilewhile这些循环语句,还有 Label(label 本身不是一个循环语句,但是经常和这些语句一起使用)。另外,你可以在循环语句中使用breakcontinue语句。

需要注意的是,还有另一种比较高级的循环语句:for each...in,但它是用来操作对象的。

综上,循环语句有以下几种:

  • for Statement
  • do…while Statement
  • while Statement
  • label Statement
  • break Statement
  • continue Statement

我们一个一个来看。

Python 50问 [3]:如何统计序列中元素的出现频度

常规解法:迭代

该问题的实际场景主要有两种,一是单纯的统计序列中元素的出现的次数,二是统计某篇文章中出现频度最高的英语单词等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 首先先来使用列表解析创建一个随机的序列
from random import randint
# 生成一个含有30个元素范围为0-20的随机序列
data = [randint(0, 20) for _ in xrange(30)]
# 统计结果是一个字典,其中data中的元素为键,0为初始值
c = dict.fromkeys(data, 0)
# 迭代
for x in data:
c[x] += 1
print c

如此一来,就得到了序列中每个元素的出现次数。如果实际需求是找频度最高的前几个元素,可以对字典进行排序。(详见1.1 在列表、字典、集合中根据条件筛选数据,这里不再赘述。)

可见,步骤虽然简单,但仍然是比较繁琐的。那么,有没有什么优雅的解决方案呢?

Python 50问 [2]:如何为元组中每个元素命名

常规场景

先来看一个案例。

学生信息系统中数据为固定格式(姓名,年龄,性别,邮箱地址),学生数据很大为了减小存储开销,对每个学生我们用元组表示。但是,访问时,我们通常使用索引(index)访问,大量的索引降低了程序的可读性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 现有如下的一些元组
# ('Jim', 16, 'male', 'jim@ursb.me')
# ('Airing', 20, 'male', 'airing@ursb.me')
# ('Lucy', 16, 'female', 'lucy@ursb.me')
student = ('Jim', 16, 'male', 'jim@ursb.me')
# name
print student[0]
# age
print student[1]
# sex
print student[2]

可见,程序中将会大量的出现一些纯数字的索引值,非常不利于程序的维护,可读性很差,一眼看不出其含义。