本次作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753
一、列表,元组,字典,集合分别如何增删改查及遍历
1、列表
•增
list1=['空无之钥','雨后誓言','永暮双狼','犹大誓约','阿芙洛狄忒']
print(list1)
#在列表末尾添加新的对象
list1.append('鲜血之舞')
print(list1)
#将对象插入列表
list1.insert(1,'幽色咏叹调')
print(list1)
list2=list(range(4))
#在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list1.extend(list2)
print(list1)

•删
list1=['空无之钥',1,'雨后誓言','永暮双狼','犹大誓约',1,'阿芙洛狄忒']
print(list1)
#移除列表中的一个元素(默认最后一个元素)
list1.pop()
print(list1)
list1.pop(2)
print(list1)
#移除列表中某个值的第一个匹配项
list1.remove(1)
print(list1)
#删除列表下标为1的值
del list1[1]
print(list1)
#删除列表
del list1
•改
list1=['空无之钥',1,'雨后誓言','永暮双狼','犹大誓约',1,'阿芙洛狄忒']
print(list1)
#修改列表下标为1的元素
list1[1]='草履虫'
print(list1)
•查
list1=['空无之钥',1,'雨后誓言','永暮双狼','犹大誓约',1,'阿芙洛狄忒']
print(list1)
#输出列表下标为2的元素
print(list1[2])
#输出右侧倒数第三个元素
print(list1[-3])
#输出下标为2到4的元素
print(list1[2:5])
#输出从第三个元素开始后的所有元素
print(list1[2:])
2、元组
元组与列表类似,不同之处在于元组的元素不能修改;
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用;
元组中的元素值不允许修改,但可以对元组进行连接组合。
tup1 = (50)
# 不加逗号,类型为整型
print(type(tup1))
tup1 = (50,)
# 加上逗号,类型为元组
print(type(tup1))
tup1=tuple(range(4))
tup2='a','b','c','d'
print('元组1:',tup1)
print('元组2:',tup2)
#输出元组1中下标为1的元素
print('tup1[1]:',tup1[1])
#输出元组1中元素最小值
print('元组1中元素最小值:',min(tup1))
#输出元组2中元素最大值
print('元组2中元素最大值:',max(tup2))
#元组连接组合
tup3=tup1+tup2
print('组合后的元组:',tup3)
3、字典
字典是另一种可变容器模型,且可存储任意类型对象。
dict1={'空无之钥':'律化娜','雨后誓言':'芽衣','永暮双狼':'浮华','犹大誓约':'德丽莎'}
print(dict1)
#新增键值对
dict1['阿芙洛狄忒']="丽塔"
print(dict1)
#删除单一元素,通过key来指定删除,通过pop()或del方法
dict1.pop('犹大誓约')
print(dict1)
del dict1['雨后誓言']
print(dict1)
#修改,值可以取任何数据类型,但键必须是不可变的
dict1['空无之钥']='草履虫'
print(dict1)
4、集合
集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set1={'空无之钥','雨后誓言','永暮双狼','犹大誓约','阿芙洛狄忒'}
print(type(set1))
print(set1)
#新增元素,若元素已存在,则不进行任何操作
set1.add('鲜血之舞')
print(set1)
#新增元素,update(),参数可以是列表,元组,字典等
set1.update(['卡莲','八重樱'])
print(set1)
#删除元素
#remove()方法,如果元素不存在,则会发生错误
set1.remove('八重樱')
print(set1)
#discard()方法,元素不存在也不会发生错误
set1.discard('八重樱')
print(set1)
二、总结列表,元组,字典,集合的联系与区别。
列表list用[]表示,有序序列,元素可变,可重复,可通过下标索引查找,如list[1];
元组tup用()表示,有序序列,元素不可变,可重复,可通过下标索引查找,如tup[0];
字典dict用{}表示,无序序列,元素中键不可重复,值可以取任何数据类型,可以重复,元素以键值对的方式存储,一般通过键(key)查找,如dict[key];
集合set用{}表示,无序序列,元素可变,不可重复,不能通过下标索引查找。
三.词频统计
from nltk.corpus import stopwords
import re
import pandas as pd
#读取文本
def get_text(file):
#打开文件,并将所文本转换成小写
fp=open(file,'r',encoding='utf-8').read().lower()
#正则表达式移除文本中的数字
fp = re.sub(r'[1-9]\d*','',fp)
sep = '-,.?!:\"\'\n'
#将sep中的符号替换成空格
for i in sep:
fp = fp.replace(i,' ')
return fp
#词频统计
def get_wordsort(fp):
#分隔单词
words_list = fp.split()
stop_words = {'mr','could','would','said','mrs','much','must','though','never'}
#获取英文停用词
words = stopwords.words('english')
#移除停用词
words_set = set(words_list)-set(words)-stop_words
words_dict = {}
#将单词存入字典
for i in words_set:
words_dict[i] = words_list.count(i)
#排序
words_sort = sorted(words_dict.items(),key=lambda x:x[1],reverse=True)
#输出词频top20
for i in range(20):
print(words_sort[i])
return words_sort
if __name__ == '__main__':
fp = get_text('Pride and Prejudice1.txt')
words_sort = get_wordsort(fp)
#将排序后的单词列表保存为CSV文件
pd.DataFrame(data=words_sort).to_csv('top20.csv',encoding='utf-8')