zoukankan      html  css  js  c++  java
  • 复合数据类型,英文词频统计

    本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753

    1.列表,元组,字典,集合分别如何增删改查及遍历。

    列表:

    list=['a','b','c','d','e','f','g','a']
    list.append('aa')#增加元素
    del list[3]#删除第四个元素
     list[4]='egg' #更改第五个元素
     list.insert(3,'cat') #插入列表
     list.index('f')#查找元素的位置
    list.index['g'] # 查看元素50的位置
     list.count('a') #统计元素个数
     for i in list: printf(list[i])  #遍历

    元组:

    元组的操作和列表类似,但是元组不能进行增加和修改删除元组中的元素
    list=('a','b')
    print(list[0])#通过元组的下标访问元素

    字典:

    d={'apple':1,'boy':2,'cat':3}
    d['apple']=4   #修改键apple 的值
    del d['apple']   #删除键apple
     a=d['apple']    #查看键apple的值
    d.clear()  #删除字典中的所有条目
      str(d)  #输出字典for key in d:printf(d[key]) #遍历

    集合

    z=set('z')
    z.add('b')  #增加元素
    z.pop()    #随机删除元素
    z.remove('b')  #删除元素  
    集合无序,不能查找和修改指定的元素

    2.总结列表,元组,字典,集合的联系与区别。参考以下几个方面:

    • 括号
    • 有序无序
    • 可变不可变
    • 重复不可重复
    • 存储与查找方式

     列表(list):列表是一组有序项目的数字结构,列表的项目应该放在方括号[ ]中,列表是可以被改变和可重复的;按照索引的方式查找通过偏移存储并且元素可以任意类型存在。

     元组(tuple):元组与列表十分相似,可重复也是通过偏移的方式进行存储,不过元组是不可变的即是你是不能对元组中的元素进行修改,而且用的是();元组的元素是固定的长度、异构,也是任意嵌套。

     字典(dict):字典使用的是{},字典是无序的,但是可变可重复;使用键-值(key-value)进行存储,查找速度快;字典的key是不能变的,list不能作为key,字符串、元祖、整数等都可以。

     集合(set):无序不可变,使用([ ]),与字典类似,但只包含键,而没有对应的值;元素可以是列表、元组、字典中的任意一个或多个。

    3.词频统计

    • 1.下载一长篇小说,存成utf-8编码的文本文件 file

      2.通过文件读取字符串 str

      3.对文本进行预处理

      4.分解提取单词 list

      5.单词计数字典 set , dict

      6.按词频排序 list.sort(key=lambda),turple

      7.排除语法型词汇,代词、冠词、连词等无语义词

      • 自定义停用词表
      • 或用stops.txt

           8.输出TOP(20)

    • 9.可视化:词云

     排序好的单词列表word保存成csv文件

    import pandas as pd
    pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')
    线上工具生成词云:
    https://wordart.com/create
    exclude={'a','the','and','i','you','in','but','not','with','by','its','for','of','an','to'}  #定义数组#
    #读取Harry Potter.txt文件中的英文内容#
    def gettxt():
        sep=".,:;?!-_'"
        txt=open('faded.txt','r').read().lower()
        for ch in sep :
            txt=txt.replace(ch,' ')
        return txt
    #分解提取单词#
    bigList=gettxt().split()
    print(bigList);
    print('faded:',bigList.count('faded'))
    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')

     

  • 相关阅读:
    STL中的stack(堆栈)
    单链表的创建与删除
    面试题四 从尾到头打印链表
    第 1 章 第 2 题 空间敏感排序问题 位向量实现( bitset位向量 )
    第 1 章 第 2 题 位向量的数组实现问题 位运算实现
    第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现
    面试题三 替换空格
    面试题二 二维数组中的查找
    面试题一 赋值运算符函数
    不为客户连接创建子进程的并发回射服务器( poll实现 )
  • 原文地址:https://www.cnblogs.com/lxyu/p/10537958.html
Copyright © 2011-2022 走看看