這個做業的要求來自於:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753。python
1.列表,元組,字典,集合分別如何增刪改查及遍歷。數組
列表操做以下所示:數據結構
#列表 string = 'list' #字符串->列表 list1 = list(string) # ['l', 'i', 's', 't'] #列表->字符串 string1 = ''.join(list1) #list #列表的增刪改查 list1 = list('this is a list') #增長 list1.append('!') #末尾增長元素 list1.insert(2,'this is index 3') #指定index增長一個元素 #刪除 list1.pop(-1) #刪除指定index的元素 默認是-1 return被刪除元素的值 del list1[-1] if '!' in list1: #刪除第一個匹配的元素,若是不存在會報錯,沒有返回值 list1.remove('!') #修改 list1[0] = '0' #元素賦值 list1[0:2] = list('05') #分片賦值 list1[1:1] = list('1234') #分片賦值 插入新元素 list1[1:5] = [] #分片賦值 刪除元素 #查找 if 'a' in list1: index = list1.index('a') # 查找元素下標 #拼接 list2 = ['new','list'] list1.extend(list2) #從列表增長元素 print list1 #逆置 list1.reverse(); print list1 #去重 #1 l1 = ['b','c','d','c','a','a'] l2 = list(set(l1)) #2 l2.sort(key=l1.index) #保持原來的順序 #3 l1 = ['b','c','d','c','a','a'] l2 = [] for i in l1: #[l2.append(i) for i in l1 if not i in l2] if not i in l2: l2.append(i) print l2 #保持原來的順序
集合操做以下所示:app
1 # 兩種方法建立 2 set1 = set('kydaa') 3 set2 = {'abc', 'jaja', 'abc', 'kyda'} 4 print(set1) 5 print(set2) 6 # 結果:自動將重複元素去除 7 {'a', 'y', 'd', 'k'} 8 {'jaja', 'abc', 'kyda'}
字典操做以下所示:this
1 #字典 2 #建立 3 dict1 = { 4 'key':'value', 5 'key1':'value1' 6 } 7 a = [('key1','value1'),('key2','value2')] 8 dict1 = dict(a) 9 dict1 = {}.fromkeys(['key1','key2'],'default_value') #從鍵值建立dict 10 dict1 = dict(key1='value1',key2='value2') 11 #增長 12 dict1['key3']='value3' #字典能夠自動添加 13 dict1.setdefault('key5','N/A') #若是不存在,就設置默認值 14 #刪除 15 del dict1['key3'] 16 print dict1.pop('key2') #popitem隨機刪除 和列表的pop同樣 17 #dict1.clear() #深刪除,即便有拷貝 也會被刪除 18 #修改 19 if 'key1' in dict1: 20 dict1['key1']='new_value_1' 21 #查找 22 if 'key1' in dict1: 23 print dict1['key1'] 24 if dict1.has_key('key1'): 25 print dict1['key1'] 26 print dict1.get('key3','not exists') #寬鬆訪問 27 print dict1.keys(),dict1.values() 28 #拼接 29 dict2 = dict(key4 = 'value4') #從字典更新另外一個字典 30 dict1.update(dict2)
2.總結列表,元組,字典,集合的聯繫與區別。編碼
(1)list是處理一組有序項目的數據結構,便可以在一個列表中存儲一個序列的項目。列表中的項目應該包括在方括號中。一旦建立了一個列表,就能夠添加,刪除,或者是搜索列表中的項目。列表是可變的數據類型,而且列表是能夠嵌套的。python裏的列表用「[]」表示。列表的特色是可重複,類型可不一樣,類型不一樣也是跟數組最本質的區別了。 spa
(2)元組和列表十分類似,不過元組是不可變的,即不能修改元組。元組用「()」表示,元組能夠嵌套。code
(3)集合特性:與字典相似,但只包含鍵,而沒有對應的值,包含的數據不重複。blog
建立:s=set(list or tuple or string),重複的值在集合中只存在一個。排序
(4)字典即把鍵(名字)和值(詳細狀況)聯繫在一塊兒,鍵必須是惟一的。鍵值對在字典中以這樣的方式標記:d={key1:value1 , key2:value2}。鍵/值對用冒號分割,而各個對用逗號分割,全部這些都包括在花括號中。
3.詞頻統計
步驟以下:
(1)下載一長篇小說,存成utf-8編碼的文本文件file;
(2)經過文件讀取字符串str;
(3)對文本進行預處理;
(4)分解提取單詞list;
(5)單詞計數字典set,dict;
(6)按詞頻排序list.sort(key=lambda),turple;
(7)排除語法型詞彙,代詞、冠詞、連詞等無語義詞;
(8)輸出TOP(20);
(9)可視化:詞雲。
排序好的單詞列表word保存成csv文件。
1 exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'} #定義數組# 2 #讀取Harry Potter.txt文件中的英文內容# 3 def gettxt(): 4 sep=".,:;?!-_'" 5 txt=open('Harry Potter.txt','r').read().lower() 6 for ch in sep : 7 txt=txt.replace(ch,' ') 8 return txt 9 #分解提取單詞# 10 bigList=gettxt().split() 11 print(bigList); 12 print('big:',bigList.count('big')) 13 bigSet=set(bigList) 14 #過濾單詞,包括一些冠詞和連詞等# 15 bigSet=bigSet-exclude 16 print(bigSet) 17 #單詞計數# 18 bigDict={} 19 for word in bigSet: 20 bigDict[word]=bigList.count(word) 21 print(bigDict) 22 23 print(bigDict.items()) 24 word=list(bigDict.items()) 25 #按詞頻排序# 26 word.sort(key=lambda x:x[1],reverse=True) 27 print(word) 28 #輸出頻率較高的詞語top20# 29 for i in range(20): 30 print(word[i]) 31 #排序好的單詞列表word保存成csv文件# 32 import pandas as pd 33 pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')
運行結果以下所示: