6.6 练习

1. 分别举例说明现实中的什么信息适合用列表、元组、集合、字典来表示和处理。

2. 以统计指标的计算为例,说明为什么同样是处理大量数据,有的程序不需要使用数据集 合体来存储大量数据,而有的程序则需要。

3. 给定两个列表 s1 = [2005,7,2,8]s2 = [’L’,’u’,’c’,'y'],计算以下表达式:

(1)s1 + s2

(2)2 * s1

(3)s1[1]

(4)s2[1:3]

(5)s1[1] + s2[-1]

4. 对第 3 题中的列表进行以下操作后,s1 和 s2 的值是什么。各小题之间是独立的。

(1)s1.remove(2)

(2)s1.sort().reverse()

(3)s1.append([s2.index(’c’)])

(4)s2.pop(s1.pop(2))

(5)s2.insert(s1[2],’I’)

5. 修改程序 6.1,使程序能计算更多统计指标(如标准差)。

6. 程序设计:自己编程实现 Python 列表对象的方法。

(1)编写函数 count(aList, x),功能同 aList.count(x)

(2)编写函数 isin(aList, x),功能同 x in aList

(3)编写函数 index(aList, x),功能同 aList.index(x)

(4)编写函数 reverse(aList),功能同 aList.reverse()

7. 编写函数 shuffle(aList),其功能是像洗牌一样将列表打乱。

8. 利用筛法找出小于等于 n 的所有质数。基本思想是:首先创建从 2 到 n 的数值列表;然 后将列表的第一个数显示输出(是质数),并从列表中删除该数的所有倍数。重复以上过程 直至列表为空。例如,如果 n 为 10,则初始列表为[2, 3, 4, 5, 6, 7, 8, 9, 10]。输出 2,并删除 2、4、6、8、10。现在列表为[3, 5, 7, 9]。输出 3,删除 3、9。现在列表为[5, 7]。输出 5, 并删除 5。最后对[7]输出 7,删除 7。至此列表为空,程序结束。

9. 设计一个学生信息管理系统。每个学生包括学号、姓名、年龄等信息,大量学生数据存 储在文件中。程序开始后向用户显示一个操作菜单,包括向数据文件增加数据项、删除数据 项、查找数据项和退出等功能。用户选择菜单项后执行相应功能,执行完毕回到菜单界面。

11. 利用链表来实现堆栈数据结构。

12. 分别利用普通列表和链表来实现队列数据结构。