一,集合类型及操作
1,集合类型的定义:
1)集合是多个元素的无序组合。
集合类型与数学中的集合概念一致
集合元素之间无序,每个元素唯一,不存在相同元素
集合元素不可更改,不能是可变数据类型
2)集合是多个元素的无序组合
集合用大括号{}表示,元素间用逗号分隔
建立集合类型用{}或set()
建立空集合类型,必须使用set()
2,集合间操作
3,集合处理方法:
4,集合类型应用场景:
1)包含关系比较:
2)数据去重:集合类型所有元素无重复
二,序列类型及操作
1,序列类型定义:
1)序列是具有先后关系的一组元素
序列是一维元素向量,元素类型可以不同
类似数学元素序列: Se, s1, ...,sn-1
元素间由序号引导,通过下标访问序列的特定元素
2)序列是一个基类类型
2,序列处理函数及方法
3,元组类型及操作:
1)元组是序列类型的一种扩展
元组是一种序列类型,一旦创建就不能被修改
使用小括号()或tuple()创建,元素间用逗号,分隔.
可以使用或不使用小括号
2)元组继承序列类型的全部通用操作
元组继承了序列类型的全部通用操作
元组因为创建后不能修改,因此没有特殊操作
使用或不使用小括号
4,列表类型及操作:
1)列表是序列类型的一种扩展(十分常用)
列表是一种序列类型,创建后可以随意被修改
使用方括号[]或list() 创建,元素间用逗号,分隔
列表中各元素类型可以不同,无长度限制
只是把地址给了它,并没有重新复制一份。
2)列表类型操作函数和方法
3)序列类型应用场景
元组用于元素不改变的应用场景,更多用于固定搭配场景
列表更加灵活,它是最常用的序列类型
最主要作用:表示一组有序数据,进而操作它们
数据保护:
三,实例9,基本统计值计算
def getNum(): nums = [] iNumStr = input("请输入数字(回车退出):") while iNumStr != '': nums.append(eval(iNumStr)) iNumStr = input("请输入数字(回车退出):") return nums def mean(numbers):#平均数 s = 0.0 for num in numbers: s +=num return s / len(numbers) def dev(numbers,mean):#方差 sdev = 0.0 for num in numbers: sdev +=(num - mean)**2 return pow(sdev / (len(numbers) - 1),0.5) def median(numbers):#中位数 sorted(numbers) size = len(numbers) if size % 2 == 0: med = (numbers[size//2-1] + numbers[size//2])/2 else: med = numbers[size//2] return med n = getNum() m = mean(n) print("平均值:{},方差:{:.2},中位数:{}".format(m,dev(n,m),median(n)))
四,字典类型及操作
1,字典类型定义:
映射是一种键(索引)和值(数据)的对应
streetAddr" :“中关村南大街5号” " city":"北京市" " zipcode ":“100081 "
2,字典类型的用法:
>>> d = {"中国":“北京”,"美国":"华盛顿",, "法国":"巴黎" } >>> d{'中国': '北京,'美国': '华盛顿’,'法国': '巴黎'} >>> d["中国"] '北京' >>> de = {} ; type(de) type(x) <class 'dict'> #返回变量x的类型
序列类型由0..N整数作为数据的默认索引映射类型则由用户为数据定义索引
-键值对:键是数据索引的扩展
-字典是键值对的集合,键值对之间无序
-采用大括号{}和dict()创建,
键值对用冒号:表示
{<键1>:<值1>, <键2>:<值2>,....<键n>:<值n>}
<字典变量> = {<键1>:<值1> ,.... ,<键n>:<值n>}
<值> = <字典变量> [<键>]
<字典变量>[<键>] = <值>
[ ]用来向字典变量中索引或增加元素
3,字典类型操作函数和方法:
>>> d = {"中国":"北京", "美国":"华盛顿",“法国" :"巴黎"} >>>"中国”in d True >>> d.keys() dict_ _keys(['中国',' 美国' ,'法国']) >>> d.values() dict_ _values(['北京',‘华盛顿', '巴黎 '])
>>> d = {"中国":"北京","美国":"华盛顿","法国":"巴黎"} >>> d.get("中国", "伊斯兰堡" ) '北京' >>> d.get("巴基斯坦","伊斯兰堡") ' 伊斯兰堡 >>> d. popitem( ) ('美国','华盛顿')
五,jieba库的使用
1,jieba库的使用:
jieba是优秀的中文分词第三方库
- 中文文本需要通过分词获得单个的词语
- jieba是优秀的中文分词第三方库,需要额外安装
- jieba库提供三种分词模式,最简单只需掌握一个函数
2,jieba分词依靠中文词库
- 利用一个中文词库,确定中文字符之间的关联概率
- 中文字符间概率大的组成词组,形成分词结果
- 除了分词,用户还可以添加自定义的词组
3,jieba分词的三种模式:
精确模式、全模式、搜索引擎模式
. 精确模式:把文本精确的切分开,不存在冗余单词
. 全模式:把文本中所有可能的词语都扫描出来,有冗余
. 搜索引擎模式:在精确模式基础上,对长词再次切分
六,实例10:文本词频统计:
def getText(): txt = open("hamlet.txt","r").read() txt = txt.lower() for ch in '|"#$%^&*(),./':#反正就是一堆字符,我觉得也可以用Ascll码来做也是可以的 txt = txt.replace(ch,' ') return txt hamletTxt = getText() words = hamletTxt.split() counts = {} for word in words: counts[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))