集合类型和操作
  • 集合元素不可修改,由不可变数据类型组成,元素不可重复
    a = {"python",123,("python",123)}使用{}建立集合
    b = set("pypy123")使用set建立集合 自动去重
  • 大括号表示,元素逗号隔开,无重复,元素无序
  • 集合操作符
    S | T 返回集合,ST中所有
    S - T 返回集合,在S不在T
    S & T 返回集合,同时在S和T
    S ^ T 返回集合,S和T中非相同元素
    S <= T或S < T 返回True/False,判断S和T子集关系
    S >= T或S > T 返回True/False,判断S和T包含关系
    S |= T就会更新S,[四个增强操作符]
  • 集合处理方法
    S.add(x)S.discard(x)x不存在不报错;S.remove(x)x不存在就报错
    S.clear()移除所有;S.pop()随机取出S的一个元素,更新S,若S空则KeyError
    S.copy()返回集合S的一个副本;len(S)返回个数;x in Sx在集合中True否则False
    set(x)其他类型变量转变为集合类型;x not in S
try:while True:print(A.pop(),end="")#为空返回error被except捕捉
except:pass
  • 集合类型应用【包含关系比较】【数据去重
ls = ["p","p","y",123]
s=set(ls)#集合元素无重复
lt=list(s)#集合转换为列表
序列类型和操作
  • 序列是具有先后关系的一组元素,元素可以相同且元素类型可以不同,一维,基类类型
  • 序列类型通用操作符
    x in s返回True/False;x not in ss + t 连接序列
    s*nn*s序列s复制n次;s[i]索引;s[i:j]s[i:j:k]切片
  • 5个函数和方法
    len(s)返回序列s长度;min(s)s中元素需要可比较;max(s)s.count(x)
    s.index(x)s.index(x,i,j)返回s从i到j位置第一次出现元素x的位置
字符串类型
元组类型
  • 序列类型的扩展,一旦创建不被修改。使用小括号()tuple()创建,元素间逗号分隔。可以使用或不使用();如return 1,2返回的其实是一个元组类型值
  • 元组内元组可用s[i][j]访问, 列表转元组,保护数据
列表类型
  • 序列类型扩展,创建后可随意修改。使用方括号[]list()创建,逗号分隔。
  • 若未用[]或list()真实创建,赋值只是起了一个别名
  • 列表类型操作函数和方法
    ls[i] = x替换元素;ls[i:j:k]=lt用列表lt替换ls切片后所对应元素子列表
    del ls[i]删除;del ls[i:j:k]删除步长元素;ls+=lt;ls *= n重复
    ls.append(x);ls.clear;ls.copy();ls.insert(i,x);ls.pop(i);ls.remove(x);ls.reverse()
  • 定义空列表lt = [];新增5个元素lt += [1,2,3,4,5];修改lt第二元素lt[2] = 6;第二位置增加一个元素lt.insert(2,7);删除第一位元素del lt[1];删除第1-3位元素del lt[1:4];是否包含数字00 in lt;新增数字0lt.append(0);返回数字0索引lt.index(0);长度len(lt);最大元素max(lt);清空ltlt.clear()
实例9:基本统计值计算

总个数:len();求和:for ... in;平均值:求和/总个数;方差;中位数(用到sorted()函数)

def getNum():nums = []iNumStr = input("请输入数字(回车退出):")while iNumStr != "":nums.append(eval(iNumStr))iNumStr = input("请输入数字(回车退出):")return nums
def median(numbers):sorted(numbers)size = len(numbers)if size % 2 == 0:med = (number[size//2-1]+number[size//2])/2else:med = numbers[size//2]return med
字典类型和操作
  • 字典是键值对的集合,键值对之间无序,采用**{}**和()创建,键值对用 表示
  • del d[k]删除d中键k对应的数据值;k in d判断键k是否在d中;d.keys()所有键;d.values()所有值得到的结果可用for in遍历却不是列表;d.items()所有键值对;d.get(k,<default>)键k存在返回相应值否则返回default;d.pop(k,<default>)键k存在取出相应值不在返回default;d.popotem()随机取出一个键值对以元组形式返回;d.clear()删除所有键值对;len.d()元素个数
  • for k in d遍历;.get()
模块5 jieba库
  • 中文分词第三方库,利用中文词库确定汉字关联频率,可添加自定义词库
  • 精确模式不存在冗余单词,全模式扫描所有可能词语,搜索引擎模式(精确模式长词切分);返回列表类型
  • jieba.lcut(s)精确模式;jieba.lcuts(s,cut_all=True)全模式,冗余;jieba.lcut_for_search(s)搜索引擎模式,冗余;jieba.add_word(w)加新词
实例10 文本词频统计

哈姆雷特人物统计

#CalHamlet.py
def getText():txt = open("hamlet.txt","r").read()txt = txt.lower()for ch in '!"#$%&()*+,-./:;<=>@[\\]^_{|}~‘’':txt = txt.replace(ch," ")return txt
hamletTxt = getText()
words= hamletTxt.split()
counts = {}
for word in words:count[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1],reverse = True)
for i in range(10):word,count = items[i]print("{0:<10}{1:>5}".format(word,count))

三国 人物出场统计----集合 序列 字典综合使用

#CalSanGuo.py
import jieba
txt = open("sanguo.txt","r",encoding="utf-8").read()#读入中文文件
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}#优化 在前10出现的非人名去除
words = jieba.lcut(txt)#分隔
count = {}
for word in words:if len(word) == 1#一个字不做名字continueelif word == "诸葛亮" or word =="孔明曰":rword ==  "孔明"elif word == "关公" or word =="云长":rword ==  "关羽"elif word == "玄德" or word =="玄德曰":rword ==  "刘备"elif word == "孟德" or word =="丞相曰":rword ==  "曹操"else:rword = wordcounts[rword] = counts.get(rword,0)+1#有则得到value并加1,无则返回0加1
for word in excludes:del counts[word]#去除非人名
items = list(counts.items())#dict.items()返回可遍历的(键, 值) 元组数组
items.sort(key=lambda x:x[1],reverse=True)#x[1],按每个元组的下标为1的值从小到大排序
for i in range(10):word,count = item[i]print({0:<10}{1:>5}".format(word,count))

dict.items()返回可遍历的**(键, 值) 元组数组**
列表有自己的sort方法items.sort,对列表进行原址排序,元组不可以使用该方法
y = sorted(x);y列表排了序,x列表保持原样;x.sort()对x列表进行排序,无返回值
key在使用时必须提供一个排序过程总调用的函数
reverse实现降序排序,需要提供一个布尔值,True为倒序
items.sort(key=lambda x:x[1],reverse=True)#x[1],按每个元组中下标为1的值从小到大排序

list1 = [{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}]
list2 = sorted(list1,key = lambda x:x['age'])#冒号前面是参,后面是对参的处理

按列表list1中字典的age从小到大排序

f = lambda x , y : x + y
#>>>f(10,15)#得25

Python_note6 组合数据类型+jieba库+文本词频统计相关推荐

  1. jieba库词频统计_运用jieba库进行词频统计

    Python第三方库jieba(中文分词) 一.概述 jieba是优秀的中文分词第三方库 - 中文文本需要通过分词获得单个的词语 - jieba是优秀的中文分词第三方库,需要额外安装 - jieba库 ...

  2. 【作业】组合数据类型练习,英文词频统计实例

    1.列表实例:由字符串创建一个作业评分列表,做增删改查询统计遍历操作.例如,查询第一个3分的下标,统计1分的同学有多少个,3分的同学有多少个等. 1 score = list('012332211') ...

  3. 组合数据类型练习,英文词频统计实例9-21

    1.列表实例:由字符串创建一个作业评分列表,做增删改查询统计遍历操作.例如,查询第一个3分的下标,统计1分的同学有多少个,3分的同学有多少个等. >>>score=list('212 ...

  4. 组合数据类型练习、英语词频统计

    字典实例:建立学生学号成绩字典,做增删改查遍历操作. di={} di["001"]=76 di["002"]=87 di["003"]=7 ...

  5. 组合数据类型练习,英文词频统计实例上(2017.9.22)

    字典实例:建立学生学号成绩字典,做增删改查遍历操作. sno=['33号','34号','35号','36号'] grade=[100,90,80,120] d={'33号':100,'34号':90 ...

  6. jieba库分词词频统计

    代码已发至github上的python文件 词频统计结果如下(词频为1的词组数量已省略): {'是': 5, '风格': 4, '擅长': 4, '的': 4, '兴趣': 4, '宣言': 4, ' ...

  7. 组合数据类型练习,英文词频统计实例上

    1.name=['陈楠芸','陈文琪','刘书签','杨必须'] scores=[7,6,6,5] d={'陈楠芸':7,'陈文琪':6,'刘书签':6,'杨必须':5} print(d) #增加 d ...

  8. 组合数据类型练习,英文词频统计实例

    1.列表实例:由字符串创建一个作业评分列表,做增删改查询统计遍历操作.例如,查询第一个3分的下标,统计1分的同学有多少个,3分的同学有多少个等 score=list('21223113321') pr ...

  9. 【词频统计】--用python的jieba进行英文文本词频统计

    目录 1.基本思路:统计哈利波特小说中词频最高的前20个,去掉一些停用词(如is) 2.停用词(截取部分) 3.代码如下 4.小知识:元组可以用来这样赋值 1.基本思路:统计哈利波特小说中词频最高的前 ...

最新文章

  1. 你知道 int(1) 和 int(10) 的区别吗?
  2. 光流 | OpenCV中的Lucas-Kanade光流与稠密光流:基于Opencv+Python(附代码)
  3. Strut2和FreeMarker整合时的一些问题
  4. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
  5. JQUERY输入改变事件change
  6. mongodb一致性协议_mongo的怎么保持事物的一致性-问答-阿里云开发者社区-阿里云...
  7. [转载] Python3十大经典错误及解决办法
  8. 美国之旅-出发前的准备
  9. mysql2 connector_2.升级mysql-connector 5到8遇到的问题
  10. Linux内核源码阅读之系统调用mmap()
  11. 海思SVP简介(sample)
  12. Excel+VBA 区域数据的去重
  13. Java工程师和软件工程师的关系-蛙课网
  14. 简单快速将pdf转换成jpg的方法
  15. “跑分”手机已过时,“双高”手机成新方向
  16. Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
  17. 【PCIe 5.0 - 1】PCIe Link属性
  18. 一维中值、均值、高斯滤波的MATLBA实现
  19. Java项目:springboot农业物资管理系统
  20. java课程 数独 文库_JAVA课程设计九宫格数独.pdf

热门文章

  1. Delphi的对象注销方法Destroy和free的区别
  2. jenkins 命令找不到
  3. RHEL7 kvm虚拟机桥接网络配置
  4. Spark函数:cogroup
  5. __builtin__与__builtins__的区别与关系
  6. 多线程Java服务器简单实现
  7. 搭建Web服务器之Step1:VMWare+CentOS6.3
  8. 9点到17点半 cron_SpringQuartz定时任务的cron表达式书写
  9. MATLAB012b与vs2012混合编程——配置vs2012工作环境
  10. USB无法识别原因分析及解决方案