作业的要求来自: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')
运行结果如下: