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

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2696

     

    1.列表,元组,字典,集合的增删改查及遍历

     

    列表
    操作 方法 示例
    增加

    list.append(obj)

    增加元素到末尾

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    list.append('张四')
    print(list)
    append

    list.insert(index, obj)

    增加元素到指定位置

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    list.insert(1,'Jack')
    print(list)
    insert

    list.extend(list2)

    将list2列表中的元素增加到list中

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    list2=['张四','Jack']
    list.extend(list2)
    print(list)
    entend

    删除

    list.pop(index)

    删除指定位置的元素

    list.pop()

    删除最后一个元素

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    list2=['张四','Jack']
    list.pop(1)
    list2.pop()
    print(list,list2)
    pop

    修改

    list[index]=obj

    修改指定位置的元素

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    list[2]='张四'
    print(list)
    list[]=obj

    查询

    list[index]

    通过下标索引,从0开始

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    print(list[2])
    list[]

    list[a:b]

    切片,从哪里到哪里

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    print(list[1:4])
    list[a:b]

    遍历

    for x in list

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    for x in list:
        print(x, end=",")
    for x in list

    for i in range(len(list))

    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    for i in range(len(list)):
        print("序号:", i, "  值:", list[i])
    for i in range(len(list))

    for i,val in enumerate(list)

     
    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    for i, val in enumerate(list):
        print("序号:", i, "  值:", val)
    for i, val in enumerate(list)

     

    for i in list

     
    list=['Michael','Bob','Tracy','李三','Tracy','Sarah']
    for i in list:
        idx = list.index(i) # 索引
        if (idx < len(list) - 1):
            print(i, '---------', list[idx + 1])
    for i in list

     

    元组
    操作 方法 示例
    增加

    tup=tup1+tup2

    元组不支持修改,但可以通过连接组合的方式进行增加

    tup1=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    tup2=('张四','Jack')
    tup=tup1+tup2
    print(tup)
    tup1+tup2

    删除

    del tup

    元组不支持单个元素删除,但可以删除整个元组

    tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    print(tup)
    del tup
    print(tup)
    del tup

    修改  

    tup[index]=obj

    修改指定位置的元素

    元组和列表转换

    tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    tup=list(tup)
    tup[0]='张四'
    tup[1]='Jacky'
    tup=tuple(tup)
    print(tup)
    tup[index]=obj

    
    
    查询

    tup[index]

    通过下标索引,从0开始

    tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    print(tup[2])
    tup[index]

    tup[a:b]

    切片,顾头不顾尾

    tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    print(tup[2:5])
    tup[a:b]

    遍历

    for x in (tup)

    tup=('Michael','Bob','Tracy','李三','Tracy','Sarah')
    for x in (tup):
        print(x)
    for x in (tup)

    字典
    操作 方法 示例
    增加

    dict[key]=value

    通过赋值的方法增加元素

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    dict['张四']=8
    print(dict)
    dict[key]

    删除

    del dict[key]

    删除单一元素,通过key来指定删除

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    del dict['Bob']
    print(dict)
    del dict[]

    dict.pop(key)

    删除单一元素,通过key来指定删除

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    dict.pop('Tracy')
    print(dict)
    dict.pop()

    修改

    dict[key]=value

    通过对已有的key重新赋值的方法修改

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    dict['Bob']=8
    print(dict)
    dict[key]=value

    查询

    dict[key]

    通过key访问value值

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    print(dict['李三'])
    dict[key]

    dict.items()

    以列表返回可遍历的(键, 值) 元组数组

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    print(dict.items())
    dict.items()

    dict.keys()

    以列表返回一个字典所有键值

    dict.values()

    以列表返回一个字典所有值

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    print(dict.keys(),dict.values())
    dict.keys(),dict.values()

    dict.get(key)

    返回指定key的对应字典值,没有返回none

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    print(dict.get('Michael'))
    dict.get()

    遍历

    for key in dict.keys()

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    for key in dict.keys():
        print(key)
    for key in dict.keys()

    for val in dict.values()

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    for val in dict.values():
        print(val)
    for val in dict.values()

    for key,val in dict.items()

    dict={'Michael':1,'Bob':5,'Tracy':3,'李三':7,'Tracy':6,'Sarah':9}
    for key, val in dict.items():
        print(key, " : ", val)
    for key, val in dict.items()

    集合
    操作 方法 示例
    增加

    s.add(obj)

    在集合s中添加对象obj

    s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
    s.add('张四')
    print(s)
    s.add()

    删除

    s.remove(obj)

    从集合s中删除对象obj

    s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
    s.remove('Bob')
    print(s)
    s.remove()

    修改  

    s[index]=obj

    修改指定位置的元素

    集合和列表转换

    s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
    s=list(s)
    s[2]='张四'
    s=set(s)
    print(s)
    s[index]=obj

    遍历 for x in s
    s=set(['Michael','Bob','Tracy','李三','Tracy','Sarah'])
    for x in s:
        print(x)
    for x in s

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

    (1)列表

    • 列表list,用中括号“[ ]”表示
    • 列表是一组任意类型的值,按照一定顺序组合而成的 
    • 可以随时添加删除修改其中的元素
    • 元素可重复
    • 存储时每一个元素被标识一个索引,每当引用时,会将这个引用指向一个对象,所以程序只需处理对象的操作

    (2)元组

    • 元组tuple,用小括号“( )”表示
    • 与列表相同,有序
    • 一旦初始化就不能修改
    • 元素可重复
    • 与列表相似,元组是对象引用的数组

    (3)字典

    • 字典dict,用大括号“{key,value}”表示
    • 字典中的项没有特定顺序,以“键”为象征 
    • 因为是无序,故不能进行序列操作,但可以在远处修改,通过键映射到值
    • key不能重复
    • 字典存储的是对象引用,不是拷贝,和列表一样

    (4)集合

    • 集合set,用小括号“( )”表示
    • 无序
    • 可变,可以添加和删除元素
    • 无重复
    • 与列表相似

    3.词频统计

    # import nltk
    # nltk.download("stopwords")
    from nltk.corpus import stopwords
    stops=set(stopwords.words('english'))
    #通过文件读取字符串 str,对文本进行预处理
    def gettxt():
        sep=".,:;?!-_'"
        txt=open('Crimes and Punishments.txt','r', encoding='UTF-8').read().lower()
        for ch in sep:
            txt=txt.replace(ch,' ')
        return txt
    #分解提取单词 list
    txtList=gettxt().split()
    print(txtList)
    print('crimes:',txtList.count('crimes'))
    txtSet=set(txtList)
    #排除语法型词汇,单词计数字典 set , dict
    txtSet=txtSet-stops
    print(txtSet)
    txtDict={}
    for word in txtSet:
        txtDict[word]=txtList.count(word)
    print(txtDict)
    
    print(txtDict.items())
    word=list(txtDict.items())
    #按词频排序 list.sort(key=lambda),turple
    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('Crimes and Punishments.csv',encoding='utf-8')
    词频统计具体代码

    结果如下图:

    词云如下图:

  • 相关阅读:
    Maven安装教程详解
    eclipse配置apache tomcat运行时访问路径不需要项目名称
    Spring MVC Captcha 验证码
    Vue混入的详解
    Eclipse上传项目到Git
    mysql 8.0.11 中使用 grant ... identified by 时 error 1064 near 'identified by '密码'' at line 1
    转 js自定义事件——Event和CustomEvent
    tp隐藏入口文件
    php发送邮件
    【项目练习】控制器直接操作--登录
  • 原文地址:https://www.cnblogs.com/kunnkkk/p/10508999.html
Copyright © 2011-2022 走看看