python笔记6.0组合数据类型

组合数据类型

集合类型及操作

集合类型定义

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

  • 集合类型与数学中的集合概念一致
  • 集合元素之间无序,每个元素唯一,不存在相同元素
  • 集合元素不可更改,不能是可变数学类型
  • 集合用大括号{}表示,元素间用逗号分割
  • 建立集合类型用{} 或set()
  • 建立空集合类型,必须使用set()
    在这里插入图片描述
  • 集合用大括号{}表示,元素间用逗号分隔
  • 集合中每个元素唯一,不存在相同元素
  • 集合元素之间无序

集合间操作

在这里插入图片描述

集合操作符

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

集合的处理方法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

集合类型应用场景

在这里插入图片描述
数据去重:集合类型所有元素无重复
在这里插入图片描述

序列类型及操作

序列类型的定义

  • 序列是具有先后关系的一组元素
  • 序列是一维元素向量,元素类型可以不同
  • 类似数学元素序列:s0,S1,S2,……,Sn-1
  • 元素间由序号引导,通过下标访问序列的特定元素
  • 序列是一个基类类型
    在这里插入图片描述
    在这里插入图片描述

序列类型通用操作符

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

元组类型定义

  • 元组是序列类型的一种扩展
  • 元组是一种序列类型,一旦创建就不能被修改
  • 使用小括号()或者tuple()创建,元素间用逗号**,**分隔开
  • 可以使用或不使用小括号
    在这里插入图片描述
    元组继承序列类型的全部通用操作
  • 元组继承了序列类型的全部通用操作
  • 元组因为创建后不能修改,因此没有特殊操作
  • 使用或不使用小括号
    在这里插入图片描述

列表类型及操作

  • 列表是序列类型的一种扩展,十分常用
  • 列表是一种序列类型,创建后可以随意被修改
  • 使用方括号 ** [ ] ** 或 list() 创建,元素间用逗号 **,**分隔
  • 列表中各元素类型可以不同,无长度限制
    在这里插入图片描述
列表类型操作函数和方法

在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

序列类型应用场景

  • 元组用于元素不改变的应用场景,更多用于固定搭配场景
  • 列表更加灵活,它是最常用的序列类型
  • 最主要作用:表示一组有序数据,进而操作它们
    1.元素遍历
    在这里插入图片描述

在这里插入图片描述

序列类型及操作

  • 序列是基类类型,扩展类型包括:字符串、元组和列表
  • 元组用**( )tuple()创建,列表用[ ]list()**创建
  • 元组操作与序列操作基本相同
  • 列表操作在序列操作基础上,增加了更多的灵活性

实例9:基本统计值计算

基本统计值
需求:给出一组数,对他们有个概要理解,求总个数、求和、平均值、方差、中位数…

代码:

#CalStatistics.py
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 = s + num
    return s / len(numbers)

def dev(numbers,mean):
    sdev = 0.0
    for num in numbers:
        sdev = 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)))

在这里插入图片描述

字典类型及操作

字典类型定义

理解“映射”

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 字典类型是“映射”的体现
  • 键值对:键是数据索引的扩展
  • 字典是键值对的集合,键值对之间无序
  • 采用大括号**{ }dict( )创建,键值对用冒号😗*表示

在这里插入图片描述

字典类型的用法

在字典变量中,通过键获取值
在这里插入图片描述
例如:
在这里插入图片描述

字典类型操作函数和方法

在这里插入图片描述
在这里插入图片描述

例如:
在这里插入图片描述
在这里插入图片描述

字典功能

在这里插入图片描述

字典类型的应用场景

映射的表达
  • 映射无处不在,键值对无处不在
  • 例如:统计数据出现的次数,数据是键,次数是值
  • 最主要作用:表达键值对数据,进而操作他们
    在这里插入图片描述

jieba库的使用

jieba库概述

jieba是优秀的中文分词第三方库

  • 中文文本需要通过分词获得单个的词语
  • jieba是优秀的中文分词第三方库,需要额外安装
  • jieba库提供三种分词模式,最简单只需掌握一个函数

jiaba库的安装

在这里插入图片描述

jieba分词的原理

jieba分词依靠中文词库

  • 利用一个中文词库,确定汉字之间的关联概率
  • 汉字间概率大的组成词组,形成分词结果
  • 除了分词,用户还可以自己添加词组

jieba分词的三种模式

精确模式、全模式、搜索引擎模式

  • 精确模式:把文本精确的切分开,不存在冗余单词(最常用)
  • 全模式:把文本中所有可能的词语都扫描出来,有冗余
  • 搜索引擎模式:在精确模式基础上,对长词再切分

jieba库常用函数

在这里插入图片描述
在这里插入图片描述

实例10:文本词频统计

问题分析:

  • 需求:一篇文章,出现了哪些词?哪些词出现的最多?
  • 该怎么做呢?

在这里插入图片描述

#CalHamletV1.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: 
    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))

在这里插入图片描述
《三国演义》:

#CalThree.py
import jieba
txt = open("Three.txt","r",encoding="utf-8").read()
txt = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word,0) + 1
    
items = list(counts.items())
items.sort(key = lambda x:x[1],reverse=True)
for i in range(15):
    word,count = items[i]
    print("{0:<10}{1:>5}".format(word,count))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值