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

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

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

    1.append()增加到最后
    li = ['a','b',123,'你好',1] li.append('abc') print(li) 2.insert()插入,按照索引去增加
    li = ['a','b',123,'你好',1] li.insert(2,'早') print(li) 3.extend ()迭代的去增
    li = ['a','b',123,'你好',1] li.extend('abcdef') print(li) li.extend([1,2,3]) li = ['a', 'b', 123, '你好', 1] 4.pop()按索引进行删除,有返回值 li.pop(1) print(li) li = ['a', 'b', 123, '你好', 1] print(li.pop(1))
    5.remove()按照元素去删除
    li = ['a','b',123,'你好',1] li.remove('你好') print(li) 6.clear()清空列表元素 li = ['a','b',123,'你好',1] li.clear() print(li) li = ['a', 'b', 123, '你好', 1] del li[1:3] print(li)

    7.按照位置去删除,也可切片删除没有返回值。 li = ['a', 'b', 123, '你好', 1] del li[1] print(li) 8.整个列表删除
    li = ['a','b',123,'你好',1]
    
    li[0] = '早'
    
    print(li)
    9.按切片来改 li = ['a','b',123,'你好',1] li[0:3] = 'safsafkf'


    10.按索引来改
    li = ['a','b',123,'你好',1]

    li[0] = '早'

    print(li)

      效果图:

    2.元组

    增:无

    删:无

    改:无

    查:

    tup = ('i','love','u')
    print(tup[0])
    print(tup)

    3.字典增删改查

    dict = {'hupu': 7, '知乎': 16, '微信': 15}
    
    #按相应的键查找
    print(dict['知乎'])
    
    #增加键值对
    dict['淘宝']=20
    print(dict['淘宝'])
    
    #修改键值对
    dict['淘宝']=15.5
    print(dict['淘宝'])
    
    #删除单个键值对或清空字典
    del dict['微信']
    print(dict)
    dict.clear()
    print(dict)
    

     效果图 

    4.集合增删改查


    list=['dog','pig','fish','cat'] set = set(list) print(set) set.add('tiger') print(set) 删 list={'dog','pig','fish','cat'} list.pop() print(list) list.remove('cat') print(list) list.clear() print(list) del list print(list) 改 list={'apple','peace','banana','orange'} list_1={'dog','cat'} list=list|list_1 print(list) list=list&list_1 print(list) 查 list={'dog','cat','pig','tiger'} print(list.__str__())

      

    
    

      效果图:

    总结:
    1. 元组和列表有哪些共同点?有哪些不同点?
    共同点:
    ① 他们都属于序列(均是容器对象),都是线性表,可以存储不同类型的内容。
    ② 都可进行以下操作:
      i. 切片操作
      ii. 索引访问
      iii. 连接操作
      iv. 成员关系操作
      v. 比较运算操作
      vi. 计数:元组长度 len()、最大值 max()、最小值 min()、求和 sum()等。
    不同点:
    ① 元组的声明使用小括号,而列表使用方括号,当声明只有一个元素的元组时,需要在这个元素的后面添加英文逗号;
    ② 列表是动态的数组,元组是静态的数组。元组声明和赋值后,不能像列表一样添加、删除和修改元素,也就是说元组在程序运行过程中不能被修改。
    ③ 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。
    2. 集合和字典有什么关系?
    共同点:
    ①都是使用花括号{}将任意对象括起来的集合
    ②他们都是无序的数据集合
    ③都是一种可变的容器模型(可变的序列)。
    不同点:
    ①存储对象不一样
      字典是由”键-值”(key-value)对组成的集合,字典的”值”(key)通过”键”(value)来引用。键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一,且key可存储任意类型对象。
      集合不支持下标索引,它是可变的数据类型,集合中的元素是唯一的,且不可以存列表和字典,一般用于元组或者列表中的元素去重。
    ②打印输出顺序不一样
      使用print输出字典的时候,通常输出的顺序和定义的顺序是不一致的;输出集合顺序和定义的一致。
    ③集合底层是字典实现,集合的所有元素都是字典中的“键对象”。

    3.词频统计

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

    3.2通过文件读取字符串 str

    3.3对文本进行预处理

    3.4分解提取单词 list

    3.5单词计数字典 set , dict

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

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

      自定义停用词表

      或用stops.txt

    3.8输出TOP(20)

    3.9可视化:词云

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

    import pandas as pd
    pd.DataFrame(data=word).to_csv('big.csv',encoding='utf-8')


    主要代码:
    import pandas  as pd
    file = open('3.txt', 'r', encoding='utf8')
    
    # 排除词汇列表
    exclude = {'a', 'an', 'and', 'was', 'as', 'up', 'my', 'it', 'here', 'at', 'll', 'his', 's', 'he', 'that', 'from', 'had',
               'have', 'we', 'the', 'i', 'you', 'in', 'on', 'but', 'with', 'not', 'by', 'its', 'for', 'of', 'to'}
    
    
    # 对文本预处理
    def getfile():
        sep = "'?', '?', '!'," '", "'", ' "', '"',':',':','.',',', ',', '.', '。','“','”',','"
        text = file.read().lower()
        for ii in sep:
            text = text.replace(ii, ' ')
        return text
    
    
    # 提取单词,单词计数词典
    fileList = getfile().split()
    fileDict = set(fileList)
    exclude1 = set(exclude)
    fileDict = fileDict - exclude1
    
    # 统计单词数量
    countDict = {}
    for word in fileDict:
        countDict[word] = fileList.count(word)
    print(countDict.items())
    word = list(countDict.items())
    
    # 排序单词数量
    word.sort(key=lambda x: x[1], reverse=True)
    print(word)
    
    # 输出TOP20
    for i in range(20):
        print(word[i])
    pd.DataFrame(data=word).to_csv('3.csv', encoding='utf-8')
    

      


    线上工具生成词云:
    https://wordart.com/create


  • 相关阅读:
    【Leetcode】23. Merge k Sorted Lists
    【Leetcode】109. Convert Sorted List to Binary Search Tree
    【Leetcode】142.Linked List Cycle II
    【Leetcode】143. Reorder List
    【Leetcode】147. Insertion Sort List
    【Leetcode】86. Partition List
    jenkins 配置安全邮件
    python 发送安全邮件
    phpstorm 同步远程服务器代码
    phpUnit 断言
  • 原文地址:https://www.cnblogs.com/lenkay/p/10587465.html
Copyright © 2011-2022 走看看