一、实验目的
1、掌握Python序列的基本操作,包括:列表、元组、字典和集合;
2、熟练掌握切片操作;
3、掌握运用列表推导式、生成器表达式等;
4、熟练使用Python内置函数max()、min()、sorted()等。
二、实验题目及结果
1、练习列表、元组的基本操作:+、*、len()、count()、[]、in等。练习列表元素的增加、删除、访问和排序等。
>>> [2,3] + [5,6] '将元素添加到列表(元组)中' [2, 3, 5, 6] >>> (2,3,4) + (5,6) (2, 3, 4, 5, 6) >>> alist = [3,5] >>> alist * 3 '重复列表(元组)中的元素形成新列表(元组)' [3, 5, 3, 5, 3, 5] >>> (2,3,4,5) * 3 (2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5) >>> alist = [1,2,3,4,5,6,7,8,9,0] >>> len(alist) '返回列表(元组)中元素个数' 10 >>> tuple = (2,3,4,6,7,8,0,1) >>> len(tuple) 8 >>> list = [1,2,3,3,5,2,3,3,6,7,2] '统计列表(元组)中指定元素个数' >>> list.count(3) 4 >>> tuple = (1,3,4,5,3,2,5,7,4,8,9) >>> tuple.count(5) 2 >>> list = [1,3,4,2,5,6,8] '列表(元组)切片操作' >>> print(list[:]) [1, 3, 4, 2, 5, 6, 8] >>> print(list[3:]) [2, 5, 6, 8] >>> tuple = (1,2,3,4,5,6,7,8,9) >>> tuple[:2] (1, 2) >>> tuple[::-1] (9, 8, 7, 6, 5, 4, 3, 2, 1) >>> 3 in [1,2,3,4] '列表(元组)成员判断' True >>> [3] in [1,2,3,4] False >>> 5 in (1,2,3,(4,5)) False >>> 5 in (3,4,5) True >>> alist = [3,4,5] '列表元素增加' >>> alist = alist + [9] '利用+运算符' >>> alist [3, 4, 5, 9] >>> alist = [2,3,4] >>> alist.append(5) 'append():尾部增加一个元素' >>> alist [2, 3, 4, 5] >>> list = [1,2,3,4,5] >>> list.insert(2,5) 'insert():列表中任意位置插入一个元素' >>> list [1, 2, 5, 3, 4, 5] >>> list.extend([6,7]) 'extend():将另一列表中元素追加到当前列表后' >>> list [1, 2, 5, 3, 4, 5, 6, 7] >>> list += '123' '+=:类似extend()方法' >>> list [1, 2, 5, 3, 4, 5, 6, 7, '1', '2', '3'] '列表元素删除' >>> del list[2] '利用del命令删除指定位元素' >>> list [1, 2, 3, 4, 5, 6, 7, '1', '2', '3'] >>> list.pop(3) 'pop():删除并返回指定位置元素,默认最后一个元素' 4 >>> list [1, 2, 3, 5, 6, 7, '1', '2', '3'] >>> list.remove(5) 'remove():删除首次出现指定元素' >>> list [1, 2, 3, 6, 7, '1', '2', '3'] '列表的访问' >>> list[3] '通过下标直接访问元素' 6 >>> list.index(7) 'index():获取指定元素首次出现的下标' 4 >>> list.count(0) 'count():统计指定元素出现次数' 0 >>> list.count(1) 1 >>> list = [2,3,5,4,6,7] '列表排序' >>> list.sort() 'sort():原地排序,无返回值,默认升序' >>> list [2, 3, 4, 5, 6, 7] >>> list.sort(reverse = True) '降序' >>> list [7, 6, 5, 4, 3, 2] >>> sorted(list) 'sorted():排序返回新列表' [2, 3, 4, 5, 6, 7] >>> sorted(list,reverse = True) [7, 6, 5, 4, 3, 2] >>> list.reverse() 'reverse():原地逆序' >>> list [2, 3, 4, 5, 6, 7]
编程题1:输入一个包含若干整数的列表,输出该列表中元素的最大值、最小值,元素的个数,列表元素的和等。并输出一个新列表,要求新列表中只包含原列表中的偶数。
列表推导式:
#newlist = [x for x in list if x%2 == 0] newlist = [] for x in list: if x%2 == 0: newlist.append(x)
2、练习字典的基本操作:添加、删除、是否为空字典、取字典中所有的key/value、判断key是否存在等。
>>> dict = {'name':'dong','sex':'male'}
>>> dict
{'name': 'dong', 'sex': 'male'}
>>> dict['age'] = 18 '字典的添加'
>>> dict['address'] = 'chinese'
>>> dict
{'name': 'dong', 'sex': 'male', 'age': 18, 'address': 'chinese'}
>>> dict.update({'a':'a'}) 'update()更新字典中键值对,可修改值,也可添加元素'
>>> dict
{'name': 'dong', 'sex': 'male', 'age': 18, 'address': 'chinese', 'a': 'a'}
>>> del dict['name'] '字典的删除'
>>> dict
{'sex': 'male', 'age': 18, 'address': 'chinese'}
>>> dict.pop('age')
18
>>> dict
{'sex': 'male', 'address': 'chinese'}
>>> dict.popitem()
('address', 'chinese')
>>> dict = {'name': 'dong', 'sex': 'male', 'age': 18, 'address': 'chinese'}
>>> dict.clear() '删除整个字典'
>>> dict
{}
>>> dict = {} '判断字典是否为空'
>>> if dict:
... print("this dict is not empty")
... else:
... print("this dict is empty")
...
this dict is empty
>>> dict = {'name': 'dong', 'sex': 'male', 'age': 18, 'address': 'chinese'}
>>> dict.keys() '读取字典的键'
dict_keys(['name', 'sex', 'age', 'address'])
>>> dict.values() '读取字典的值'
dict_values(['dong', 'male', 18, 'chinese'])
>>> 'name' in dict '用in方法判断字典中的键是否存在'
True
编程题2:输入两个分别包含若干整数的列表listA和listB,要求使用listA中的元素作为键,使用listB中的元素作为值,生成一个字典,并输出。
zip():将多个可迭代对象元素对应元素打包成一个个元组,返回包含这些元组的zip对象
编程题3:从['Python','Java','C','C++','C#']中随机生成20个元素,然后统计每个元素的出现次数。例如:随机生成列表al的元素如下图所示,d为统计后生成的字典。
举一反三:改变统计的数据源,可以扩展为“文本词频统计”类问题。例如:名著中人物出场次数的统计;新闻报道、科研论文、政府工作报告等词频统计类应用。
3、练习集合的基本操作:添加、删除、是否为空集、并、交、差等。
>>> set = set(range(8,14)) '集合的创建'
>>> set
{8, 9, 10, 11, 12, 13}
>>> set.add(15) '集合元素的增加'
>>> set
{8, 9, 10, 11, 12, 13, 15}
>>> set.pop() '集合元素的删除'
8
>>> set
{9, 10, 11, 12, 13, 15}
>>> set.remove(10) '删除指定元素'
>>> set
{9, 11, 12, 13, 15}
>>> del set
>>> set
>>> set = {1,2,3,4,5}
>>> set.clear()
>>> set
set()
>>> set = {} '判断是否为空集合'
>>> if set:
... print("not empty")
... else:
... print("empty")
...
empty
>>> a_set = {1,2,3,4,5}
>>> b_set = {2,3,4,7,8,9}
>>> a_set & b_set '交集'
{2, 3, 4}
>>> a_set | b_set '并集'
{1, 2, 3, 4, 5, 7, 8, 9}
>>> a_set - b_set '差集'
{1, 5}
>>> b_set - a_set
{8, 9, 7}
编程题4:创建两个集合,返回这两个集合的并集和差集。



