python复合数据类型_python—组合数据类型

本篇介绍python中集合、序列、字典相关数据类型;

1、集合类型及操作:

集合类型的定义:集合是多个元素的无序组合,集合和数学中集合类型概念一致;集合之间元素无序,每个元素唯一,不存在相同元素,集合元素不可更改,不能是可变数据类型;

集合是多个元素的数据组合,使用{}大括号表示,元素间用逗号分隔,建立集合类型使用{}或者set(),建立空集合类型使用set()集合定义

集合操作符:

python提供了集合有6中操作符,除了并、交、差、补外还提供了集合间关系操作符<=,>=,集合操作符

同时python语法提供了集合的增强操作符:集合的增强操作符

集合处理方法:

python有多种集合操作符,具体如下:集合操作函数1集合操作函数2

集合类型应用场景:

集合可以判断字符是否存在于集合中,可以用于数据去重场景,集合类型所有数据无重复;

2、序列类型及操作(元组和列表):

序列定义:序列是具有先后顺序的一组数;

序列是一维元素向量,元素类型可以不同,类似与数学元素序列,元素间由序号引导,通过下标访问序列的特定元素;

序列是一个基类类型,包括字符串类型、元组类型、列表类型,都遵循正向递增,反向递减规则;

序列处理函数和方法:

序列类型通用操作符包括如下:序列操作符

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

元组类型及操作:

元组是序列的一种扩展,元组是一种序列类型一旦创建就不能修改,使用小括号()或者tuple()创建,元素间使用逗号分隔,可以使用或者不使用小括号;

元组类型继承了序列类型的全部通用类型的操作,元组一旦创建不能修改因此没有特殊操作,元组可以使用小括号也可以不使用小括号;

列表类型及操作:

列表是序列类型的一种扩展,十分常用,列表是一种序列类型创建后可以随意修改,使用[]或者list()创建,元素间使用逗号分割,列表中各元素类型可以不同,没有长度限制;

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

序列类型应用场景:

元组用于不改变的应用场景,更多用于固定搭配场景;

列表更加灵活,是常用的序列类型;

序列类型主要作用是表示一组有序数据,进而操作它们;

主要用于元素遍历、数据保护;

3、实例:基本统计值和计算;

需求:给出一组数据,对这一组数据需要有一个概要理解;(总个数、求和、平均值、方差)

#calstatisticsv1.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)))

4、字典类型及操作;

字典类型定义:字典是一种键(索引)和值(数据)的对应;字典的映射类型是由用户为数据定义的索引;

字典是键值对的集合,键值对间是无序的;采用大括号{}和dict()创建,键值对使用冒号:表示;

在字典中通过键获取值;

字典处理函数和方法:

字典基本函数处理方法:字典函数字典函数1

字典类型应用场景:

映射无处不在,统计数据出现的次数,数据是键值是次数;请求返回的json

或者请求的json参数都是一种意义上的字典;

5、jieba库的使用:

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

安装:在cmd中使用pip install jieba 自动下载安装;

jieba分词依靠中文字符之间的关联概率,中文间概率大的组成词组,形成分词结果,除了分词用户还可以添加自定义词组;

jieba分为三种使用模式:精确模式、全模式、搜索引擎模式;

精确模式:是把文本精确的切分开,不存在多余的单词;

全模式:把文本中所有可能的词语扫描出来,有多余的单词;

搜索引擎模式:在精确基础之上再对长词进行切分;

jieba库常用函数:jieba库基本函数jieba库基本函数

6、文本词频统计问题分析:

需求:对一篇文本中出现了哪些词,哪些词出现的频率最高?或者一本小说中人物出场次数......

#哈姆雷特英文中词频统计;

#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))

三国演义出场人物统计:

#calthreekingdomsv1.py

import jieba

txt = open("threekingdoms.txt","r",encoding="utf-8").read()

excludes = {"将军","却说","荆州","二人","不可","不能","如此","商议","如何","主公","军士","左右"

,"军马","引兵","次日","大喜","天下","东吴","于是",

"今日","不敢","魏兵","陛下","人马","一人","都督",

"不知","汉中"}

words = jieba.lcut(txt)

counts = {}

for word in words:

if len(word)==1:

continue

elif word == "诸葛亮" or word == "孔明曰":

rword = "孔明"

elif word == "关公" or word == "云长":

rword = "关羽"

elif word == "玄德" or word == "玄德曰":

rword = "刘备"

elif word == "孟德" or word == "丞相":

rword = "曹操"

else:

rword = word

counts[rword] = counts.get(rword,0)+1

for word in excludes:

del counts[word]

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))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值