本次作業要求來自于: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')