作業的要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696
1.清單,元組,字典,集合分别如何增删改查及周遊。
清單:
1 #增
2 #append往清單裡追加,放在最後
3 ls2=["helllo",[1,3],["hello"],3.14,"哈哈哈"]
4 ls2.append("append_1")
5 print(ls2)
6 ls2.append(["111",111])
7 print(ls2)
8
9 #extend可以将另一個集合中的元素逐一添加到清單中
10 ls2=["helllo",[1,3],["hello"],3.14]
11 ls1=[123,456,"aaa",["bbb",789]]
12 ls2.extend(ls1)
13 print(ls2)
14 ls2.extend("aaaa")
15 print(ls2)
16
17 #insert 在指定位置index前插入元素資料項
18 ls2=["helllo",[1,3],["hello"],3.14,"哈哈哈"]
19 ls1=[1,3,"222"]
20 ls2.insert(1,"myinsert")
21 print(ls2)
22 ls2.insert(1,ls1)
23 print(ls2)
24
25 #删
26 #del根據角标去索引删除元素資料
27 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈",3.14,3.14,3.14]
28 del ls2[0]
29 print(ls2)
30
31 #pop無參數的話删除最後一個,有參數index的話,按角标删除,跟del功能相似
32 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈",3.14,3.14,3.14]
33 ls2.pop(0)
34 print(ls2)
35 ls2.pop()
36 print(ls2)
37
38 #remove根據元素的值進行删除,比較常用
39 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈",2.5,3,3.14,2.5,3]
40 ls1=["hello",123]
41 ls2.remove(3)
42 print(ls2)
43
44 #改
45 #修改清單中值,直接用指派=即可
46 ls2=["helllo",[1,3],["hello"],3.14,"哈哈哈"]
47 ls2[0]="你好"
48 print(ls2)
49
50 #查
51 #判斷某個元素是否在清單中,但是不傳回具體位置,有為true,無為false.
52 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈"]
53 if "hello" in ls2:
54 print ("hello在ls2中")
55 else :
56 print("沒找到")
57
58 #用index函數,如果存在傳回角标
59 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈",3.14,3.14]
60 print(ls2.index(3.14))
61 #print(ls2.index("3.14"))
62
63 #使用count()統計函數,也可以查詢是否存在,但是無法傳回角标位置
64 ls2=["hello",[1,3],["hello"],3.14,"哈哈哈",3.14,3.14,3.14]
65 print(ls2.count(3.14))
66 print(ls2.count("aaaa"))
67
68 #周遊
69 #for循環語句周遊清單的值
70 ls1 =["hello",1,3,"你好",3.14,'true']
71 num=1
72 for i in ls1:
73 print("清單的第%d的值:"%(num),i)
74 num +=1
75
76 #使用while語句周遊清單的值
77 ls1 =["hello",1,3,"你好",3.14,'true']
78 i=0
79 while i<len(ls1):
80 print("列印ls1的第%d個值:"%(i+1),ls1[i])
81 i += 1
元組(不能增删改,隻能查找):
num = ("x", "y", "z")
print('查詢:\n原有的字母元素為:{}'.format(num))
print('num(0):查詢到下标為1元素的值是:{}\n'.format(num[0]))
字典:
# 建立字典
textDict = {'JOJO':'60','GIOGIO':'100'}
print(textDict)
# 增
textDict['DIO']='120'
print(textDict)
# 改
textDict['JOJO']='90'
print(textDict)
# 删
del textDict['JOJO']
print(textDict)
# 查
print(textDict['GIOGIO'])
# 周遊
for s in textDict:
print( "%s : %s"%(s,textDict[s]))
集合:
#增
s = set(['baidu','taobao','tianmao'])
s.add('google')
print(s)
#删
s = set(['baidu','tianmao','taobao'])
s.remove('taobao')
print(s)
#改
s = set(['baidu','tianmao',taobao'])
s = list(s)
s[0] = 'google'
s = set(s)
print(s)
#周遊
s = set(['baidu','tianmao','taobao'])
s.clear()
print(s)
s = set(['baidu','tianmao','taobao'])
for bl in s:
print(bl)
2.總結清單,元組,字典,集合的聯系與差別。

3.詞頻統計
①下載下傳一長篇小說,存成utf-8編碼的文本檔案 file
②通過檔案讀取字元串 str
③對文本進行預處理
④分解提取單詞 list
⑤單詞計數字典 set , dict
⑥按詞頻排序 list.sort(key=lambda),turple
⑦排除文法型詞彙,代詞、冠詞、連詞等無語義詞
⑧自定義停用詞表
或用stops.txt
輸出TOP(20)
⑨可視化:詞雲
代碼如下:
# -*- coding=utf-8 -*-
exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to','is','was','that','he','this','are','it','be','as','at','on','if','has','have','so','or'} #定義數組#
#讀取Harry Potter.txt檔案中的英文内容#
def gettxt():
sep=".,:;?!-_'"
txt=open('Were You Ever a Child.txt','r',encoding='UTF-8').read().lower()
for ch in sep :
txt=txt.replace(ch,' ')
return txt
#分解提取單詞#
bigList=gettxt().split()
print(bigList);
print('big:',bigList.count('big'))
bigSet=set(bigList)
#過濾單詞,包括一些冠詞和連詞等#
bigSet=bigSet-exclude
print(bigSet)
#單詞計數#
bigDict={}
for word in bigSet:
bigDict[word]=bigList.count(word)
print(bigDict)
print(bigDict.items())
word=list(bigDict.items())
#按詞頻排序#
word.sort(key=lambda x:x[1],reverse=True)
print(word)
#輸出頻率較高的詞語top20#
for i in range(20):
print(word[i])
将生成的結果儲存成csv檔案:
import pandas as pd
pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')
運作結果如下: