这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

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] = '' #元素赋值
list1[0:2] = list('') #分片赋值
list1[1:1] = list('') #分片赋值 插入新元素
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 #保持原来的顺序

集合操作如下所示:

 # 两种方法创建
set1 = set('kydaa')
set2 = {'abc', 'jaja', 'abc', 'kyda'}
print(set1)
print(set2)
# 结果:自动将重复元素去除
{'a', 'y', 'd', 'k'}
{'jaja', 'abc', 'kyda'}

字典操作如下所示:

 #字典
#创建
dict1 = {
'key':'value',
'key1':'value1'
}
a = [('key1','value1'),('key2','value2')]
dict1 = dict(a)
dict1 = {}.fromkeys(['key1','key2'],'default_value') #从键值创建dict
dict1 = dict(key1='value1',key2='value2')
#增加
dict1['key3']='value3' #字典可以自动添加
dict1.setdefault('key5','N/A') #如果不存在,就设置默认值
#删除
del dict1['key3']
print dict1.pop('key2') #popitem随机删除 和列表的pop一样
#dict1.clear() #深删除,即使有拷贝 也会被删除
#修改
if 'key1' in dict1:
dict1['key1']='new_value_1'
#查找
if 'key1' in dict1:
print dict1['key1']
if dict1.has_key('key1'):
print dict1['key1']
print dict1.get('key3','not exists') #宽松访问
print dict1.keys(),dict1.values()
#拼接
dict2 = dict(key4 = 'value4') #从字典更新另一个字典
dict1.update(dict2)

2.总结列表,元组,字典,集合的联系与区别。

(1)list是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目。列表中的项目应该包括在方括号中。一旦创建了一个列表,就可以添加,删除,或者是搜索列表中的项目。列表是可变的数据类型,并且列表是可以嵌套的。python里的列表用“[]”表示。列表的特点是可重复,类型可不同,类型不同也是跟数组最本质的区别了。 

(2)元组和列表十分相似,不过元组是不可变的,即不能修改元组。元组用“()”表示,元组可以嵌套。

(3)集合特性:与字典类似,但只包含键,而没有对应的值,包含的数据不重复。

创建: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文件。

 exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'}  #定义数组#
#读取Harry Potter.txt文件中的英文内容#
def gettxt():
sep=".,:;?!-_'"
txt=open('Harry Potter.txt','r').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])
#排序好的单词列表word保存成csv文件#
import pandas as pd
pd.DataFrame(data=word).to_csv('Harry Potter.csv',encoding='utf-8')

运行结果如下所示:

python复合数据类型以及英文词频统计的更多相关文章

  1. 组合数据类型,英文词频统计 python

    练习: 总结列表,元组,字典,集合的联系与区别.列表,元组,字典,集合的遍历. 区别: 一.列表:列表给大家的印象是索引,有了索引就是有序,想要存储有序的项目,用列表是再好不过的选择了.在python ...

  2. Python——字符串、文件操作,英文词频统计预处理

    一.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 2.凯撒密码编码与解码 凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左 ...

  3. python字符串操作、文件操作,英文词频统计预处理

    1.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 解析身份证号:生日.性别.出生地等 def function3(): print('请输入身份证号') ...

  4. Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...

  5. 1.字符串操作:& 2.英文词频统计预处理

    1.字符串操作: 解析身份证号:生日.性别.出生地等. ID = input('请输入十八位身份证号码: ') if len(ID) == 18: print("你的身份证号码是 " ...

  6. Programming | 中/ 英文词频统计(MATLAB实现)

    一.英文词频统计 英文词频统计很简单,只需借助split断句,再统计即可. 完整MATLAB代码: function wordcount %思路:中文词频统计涉及到对"词语"的判断 ...

  7. python瓦登尔湖词频统计

    #瓦登尔湖词频统计: import string path = 'D:/python3/Walden.txt' with open(path,'r',encoding= 'utf-8') as tex ...

  8. python jieba分词小说与词频统计

    1.知识点 """ 1)cut() a) codecs.open() 解决编码问题 b) f.readline() 读取一行,也可以使用f.readlines()读取多行 ...

  9. python:Hamlet英文词频统计

    #CalHamletV1.py def getText(): #定义函数读取文件 txt = open("hamlet.txt","r").read() txt ...

随机推荐

  1. VLC祥解

    功能部份:   VLC媒體播放器的核心是libvlc ,它提供了界面,應用處理功能,如播放列表管理,音頻和視頻解碼和輸出,線程系統.所有libvlc源文件設在的/src目錄及其子目錄:   # con ...

  2. linux技能点三 find grep

    find:      1.   按文件名查找    find . -name "a*.txt"     注意双引号:  2.   按文件大小查找 find .-size [+/-] ...

  3. Cannot assign to read only property 'exports' of object '#<Object>' ,文件名大小写问题!!!

    有些坑不知道怎么就掉进去,可能一辈子都爬不起来!!! 一.错误描述 昨天还好好的,今天早上来从git获取了一下别人提交的代码就出错了!而提交代码的人 运行一点错误都没有!!! cya@KQ-101 M ...

  4. 【python】文件下载---基础版

    基于TCP协议的基础版本,不支持大文件 Client.py import socket def main(): # 1. 创建套接字 tcp_socket = socket.socket(socket ...

  5. MySQL-查看DB文件位置

    show global variables like "%datadir%"

  6. windows下控制台程序实现窗口显示

    windows下实现窗口显示,如果限定是C/C++语言,并且是原生Windows支持,需要使用GDI或GDI+.一般是在Visual Studio里新建Win32应用程序,而不是Win32 conso ...

  7. 在CentOS 7上修改主机名的方法

    这次我们来讲解一下如何在CentOS 7环境上修改主机名 1.从VMware上登录CentOS 7的虚拟机,并以root用户登录. 2.查看未修改前的主机名 1>.我们可以通过文件hostnam ...

  8. hdu3486Interviewe(二分是错的)(ST算法RMQ + 判定上下界枚举)

    题目大意是找最小的m使得前m段中每一段的最大值相加严格大于k,每一段长度为[n/m](n/m向下取整,多余的后半部分部分n-m*[n/m]不要) 先给一段我一开始的思路,和网上许多题解思路一样,但其实 ...

  9. CentOS7.6 yum方式安装redis最新版

    sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm sudo yum --enablerep ...

  10. datediff(date1,date2) 函数的使用

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在MySQL中可以使用DATEDIFF()函数计算两个日期之间的天数 语法: datediff(date1,date2) 注:date1和date ...