欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python学习笔记(六)

程序员文章站 2023-08-29 17:30:36
Python学习笔记(六)—— 集合类型及操作 一、集合类型及操作 1、集合类型定义 - 集合是多个元素的无序组合 例子: 2、集合操作符 3、集合处理方法 4、集合类型应用场景 4.1 包含关系比较 4.2 数据去重:集合类型所有元素无重复 二、序列类型及操作 1、序列类型定义 - 序列是具有先后 ......

python学习笔记(六)—— 集合类型及操作

一、集合类型及操作

  1、集合类型定义

    - 集合是多个元素的无序组合

    Python学习笔记(六)

 

    Python学习笔记(六)

 

 

    例子:

 

      Python学习笔记(六)

 

  2、集合操作符

    Python学习笔记(六)

    Python学习笔记(六)

 

  3、集合处理方法

    Python学习笔记(六)

    Python学习笔记(六)

 

  4、集合类型应用场景

    4.1 包含关系比较

      Python学习笔记(六)

 

 

    4.2 数据去重:集合类型所有元素无重复

 

      Python学习笔记(六)

 

 

二、序列类型及操作

 

  1、序列类型定义

 

    - 序列是具有先后关系的一组元素 

            Python学习笔记(六)

     Python学习笔记(六)

 

 

 

 

  2、序列处理函数及方法

 

     2.1 序列类型通用操作符

      Python学习笔记(六)

 

      eg:

      Python学习笔记(六)

 

    2.2 序列类型通用函数和方法

      Python学习笔记(六)

 

      eg:

        Python学习笔记(六)

 

 

  3、元组类型及操作

    - 元祖是序列类型的一种扩展

    Python学习笔记(六)

 

 

    eg:

 

     Python学习笔记(六)

 

 

`    - 元组继承序列类型的全部通用操作

 

     Python学习笔记(六)

 

 

  4、列表类型及操作

    - 列表是序列类型的一种扩展,十分常用

    Python学习笔记(六)

 

 

    - 列表类型操作函数和方法 

                    Python学习笔记(六)

 

      eg:

      Python学习笔记(六)

       Python学习笔记(六)

 

       eg:

        Python学习笔记(六)

 

      - 常用列表功能

     Python学习笔记(六)

     Python学习笔记(六)

 

     

 

 

 

  5、序列类型应用场景

 

    5.1 元素遍历

 

 

      Python学习笔记(六)

 

 

    5.2 数据保护

 

    Python学习笔记(六)

 

 

三、字典类型及操作

  1、字典类型定义

    - 映射:是一种键(索引)和值(数据)的对应

    Python学习笔记(六)

 

 

    eg:

 

     Python学习笔记(六)

 

  2、字典处理函数及方法

    Python学习笔记(六)

 

 

    eg:

 

    Python学习笔记(六)

 

    Python学习笔记(六)

 

 

    eg:

 

     Python学习笔记(六)

 

 

    - 字典常用功能

 

   Python学习笔记(六)

 

 

 

  3、字典类型应用场景

    - 元素遍历

    Python学习笔记(六)

四、jieba库

  1、概述:jieba 是优秀的中文分词第三方库

  2、jieba分词的三种模式

    Python学习笔记(六)

 

 

  3、jieba库常用函数

 

   Python学习笔记(六)

 

      Python学习笔记(六)

 

 

五、实例分析

 

  1、基本统计值计算:总个数、求和、平均值、方差、中位数...

 

     -  方法:

 

   Python学习笔记(六)

 

 

   代码:  

  1. #calstatisticsv1.py
  2. def getnum():       #获取用户不定长度的输入
  3.     nums []
  4.     inumstr input("请输入数字(回车退出): ")
  5.     while inumstr !"":
  6.         nums.append(eval(inumstr))
  7.         inumstr input("请输入数字(回车退出): ")
  8.     return nums
  9.  
  10. def mean(numbers):  #计算平均值
  11.     0.0
  12.     for num in numbers:
  13.         num
  14.     return len(numbers)
  15.  
  16. def dev(numbers, mean): #计算方差
  17.     sdev 0.0
  18.     for num in numbers:
  19.         sdev sdev (num mean)**2
  20.     return pow(sdev (len(numbers)-1), 0.5)
  21.  
  22. def median(numbers):    #计算中位数
  23.     sorted(numbers)
  24.     size len(numbers)
  25.     if size =0:
  26.         med (numbers[size//2-1numbers[size//2])/2
  27.     else:
  28.         med numbers[size//2]
  29.     return med
  30.  
  31. =  getnum() #主体函数
  32. =  mean(n)
  33. print("平均值:{},方差:{:.2},中位数:{}.".format(m, dev(n,m),median(n)))

 

 

 

 

    2、文本词频统计

 

     Python学习笔记(六)

    Python学习笔记(六)

 

   

        - 统计英文文本

      代码:

      

  1. #calhamletv1.py
  2. def gettext():
  3.     txt open("hamlet.txt""r").read()
  4.     txt txt.lower()
  5.     for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
  6.         txt txt.replace(ch, " ")   #将文本中特殊字符替换为空格
  7.     return txt
  8.  
  9. hamlettxt gettext()
  10. words  hamlettxt.split()
  11. counts {}
  12. for word in words:          
  13.     counts[word] counts.get(word,01
  14. items list(counts.items())
  15. items.sort(key=lambda x:x[1], reverse=true
  16. for in range(10):
  17.     word, count items[i]
  18.     print ("{0:<10}{1:>5}".format(word, count))

      运行结果:

      Python学习笔记(六)

 

      

      - 统计中文文本

      代码:    

  1. #calthreekingdomsv1.py
  2. import jieba
  3. txt open("threekingdoms.txt""r", encoding='utf-8').read()
  4. words  jieba.lcut(txt)
  5. counts {}
  6. for word in words:
  7.     if len(word) =1:
  8.         continue
  9.     else:
  10.         counts[word] counts.get(word,01
  11. items list(counts.items())
  12. items.sort(key=lambda x:x[1], reverse=true
  13. for in range(15):
  14.     word, count items[i]
  15.     print ("{0:<10}{1:>5}".format(word, count))

      运行结果:

    Python学习笔记(六)

 

 

       进一步优化

      代码:  

  1. #calthreekingdomsv2.py
  2. import jieba
  3. excludes {"将军","却说","荆州","二人","不可","不能","如此"}
  4. txt open("threekingdoms.txt""r", encoding='utf-8').read()
  5. words  jieba.lcut(txt)
  6. counts {}
  7. for word in words:
  8.     if len(word) =1:
  9.         continue
  10.     elif word ="诸葛亮" or word ="孔明曰":
  11.         rword "孔明"
  12.     elif word ="关公" or word ="云长":
  13.         rword "关羽"
  14.     elif word ="玄德" or word ="玄德曰":
  15.         rword "刘备"
  16.     elif word ="孟德" or word ="丞相":
  17.         rword "曹操"
  18.     else:
  19.         rword word
  20.     counts[rword] counts.get(rword,01
  21. for word in excludes:
  22.     del counts[word]
  23. items list(counts.items())
  24. items.sort(key=lambda x:x[1], reverse=true
  25. for in range(10):
  26.     word, count items[i]
  27.     print ("{0:<10}{1:>5}".format(word, count))

      运行结果:

      Python学习笔记(六)