作业来自于 https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
1.列表,元组,字典,集合分别如何增删改查及遍历。
列表的增删改查
1 list = ['张三', 66, 'jack'] 2 # 按索引号插入元素 3 list.insert(0,'王一') 4 print(list) 5 # 增加到最后 6 list.append(78) 7 print(list) 8 list1 = [999] 9 # 可以与其它list合并 10 list.extend(list1) 11 print(list) 12 # 按索引查找 13 print(list[0]) 14 # 删掉最后一个元素 15 list.pop() 16 print(list) 17 # 按索引删除 18 list.pop(0) 19 print(list) 20 # 按切片删除 21 del list[0:2] 22 print(list) 23 # 按元素删除 24 list.remove(78) 25 print(list) 26 # 删除整个列表 27 list = ['张三', 66, 'jack'] 28 # 改变第一个元素 29 list[0] = '李四' 30 print(list) 31 list.clear() 32 print(list) 33 # 遍历 34 for i in list: 35 print(i)
运行结果:
元组的增删改查
1 tuple = ('张三', 66, 'jack') 2 # 按索引查找 3 print(tuple[0]) 4 # 遍历 5 for i in tuple: 6 print(i)
运行结果
集合的增删改查
1 list = ['张三', 66, 'jack'] 2 set = set(list) 3 # 增加一个元素,位置随机 4 set.add('李四') 5 print("add('李四'):" + set.__str__()) 6 # 按元素删除 7 set.remove(66) 8 print('remove(66):' + set.__str__()) 9 # 删除并返回任意set元素。 10 set.pop() 11 print('pop():' + set.__str__()) 12 # 删除整个集合 13 set.clear() 14 print('clear():' + set.__str__()) 15 # 遍历 16 for i in set: 17 print(i)
运行结果
字典的增删改查
1 age_dict = {'李四': 15, 'jack': 17, '王五': 20, '刘一':17} 2 # 按照key来取item的value 3 print(age_dict['刘一']) 4 # 修改value 5 age_dict['刘一'] = 50 6 print(age_dict['刘一']) 7 # 整个字典 8 print(age_dict.items()) 9 # 字典所有的value 10 print(age_dict.values()) 11 # 字典所有的key 12 print(age_dict.keys()) 13 # 按key删除一个item 并返回被删除item的value 14 print(age_dict.pop('李四')) 15 print(age_dict) 16 # 根据key得到value的值 17 print(age_dict.get('jack')) 18 # 删除字典最后一个item 19 age_dict.popitem() 20 print(age_dict) 21 # z设置一个item添加到dict后面,不提供第二个参数则key默认为None 22 age_dict.setdefault('nacy', 5) 23 print(age_dict) 24 age_dict.setdefault('tom') 25 print(age_dict) 26 new_dict = {'陈': 15} 27 age_dict.update(new_dict) 28 # 把字典dict2(new_dict)的键/值对更新到dict(age_dict)里。 29 print(age_dict) 30 # 删除整个dict 31 age_dict.clear() 32 print(age_dict)
运行结果
2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:
(1)括号
list的括号为[],tuple的括号为(),set的括号为{},dict的括号为{}。
(2)有序无序
list与tuple是有序的,set与dict是无序的.
(3)可变不可变
list的元素是可变的,tuple、set的元素是不可变的,dict的key必须是不可变对象。
(4)重复不可重复
list、tuple的元素可重复,set、dict的元素不可重复。
(5)存储与查找方式
dict与list相比
1)查找和插入的速度极快,不会随着key的增加而变慢;
2)需要占用大量的内存,内存浪费多。
list与dict相比
1)查找和插入的时间随着元素的增加而增加;
2)占用空间小,浪费内存很少。
tuple与list类似,可以直接用索引取元素,存储的方式类似数组,set与dict类似,用key查找元素,存储利用哈希算法,每一个key都可以用hash算法算得一个唯一的值,然后把key存储进这个值指定的内存空间。
3.词频统计
-
1.下载一长篇小说,存成utf-8编码的文本文件 file
2.通过文件读取字符串 str
3.对文本进行预处理
4.分解提取单词 list
5.单词计数字典 set , dict
6.按词频排序 list.sort(key=lambda),turple
7.排除语法型词汇,代词、冠词、连词等无语义词
- 自定义停用词表
- 或用stops.txt
8.输出TOP(20)
- 9.可视化:词云
排序好的单词列表word保存成csv文件
import pandas as pd
pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
线上工具生成词云:
https://wordart.com/create
代码
1 import pandas as pd 2 # 读取小说 3 with open(r'./Sophies World.txt', 'r', encoding='utf8') as f: 4 book = f.read() 5 booksymbol = [" '", "'", ' "', '"', '""', ' ', ' ', '?', '?', '!', "!", ',', ',', '.', '。'] 6 # # 去掉一些不必要的标点符号 7 for i in booksymbol: 8 book = book.replace(i, '') 9 # 把所有转小写 以空格分隔开 10 book = book.lower().split() 11 # # 读取停用词 12 with open(r'./stops.txt', 'r', encoding='utf8') as f: 13 stops = f.read() 14 # 整理停用词格式,去掉回车和单双引号 15 stopsymbol = [" '", "'", ' "', '"', ' '] 16 for i in stopsymbol: 17 stops = stops.replace(i, '') 18 # 以逗号分隔 19 stops = stops.split(',') 20 worddict = {} 21 # 去掉停用词 22 wordset = set(book) - set(stops) 23 # 计算词频 24 for i in wordset: 25 worddict[i] = book.count(i) 26 # 让其变成可排序的list 27 wordcount = list(worddict.items()) 28 # 把value作为排序的对象 29 wordcount.sort(key = lambda x:x[1], reverse = True) 30 # Top20生成csv文件 31 pd.DataFrame(data=wordcount[0:20]).to_csv('big.csv',encoding='utf-8')
运行结果
作业博客要求:
- 文字作业要求言简意骇,用自己的话说明清楚。
- 编码作业要求放上代码,加好注释,并附上运行结果截图。