失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python语法基础(U.6)-组合数据类型

Python语法基础(U.6)-组合数据类型

时间:2023-12-26 06:33:27

相关推荐

Python语法基础(U.6)-组合数据类型

为mooc网站的北京理工大学的 嵩天 、黄天羽 、礼欣 三位老师的课程笔记。

欢迎starGITHUB可下载源码

6 组合数据类型

6.1 集合类型及操作

6.2 序列类型及操作(元组类型、列表类型)

6.3 实例9:基本统计值计算

6.4 字典类型及操作

6.5 模块5:jieba库的使用

6.6 实例10:文本词频统计

6.1 集合类型及操作

集合类型定义;

集合操作符;

集合处理方法;

集合类型应用场景;

6.1.1 集合定义

集合是不可变数据类型,每个元素唯一,不存在相同元素,元素之间无顺序,用大括号{}表示,元素间用逗号分隔,建立集合用{}或set(),建立空集合时必须使用set()

A = {"python", 123, ("python", 123)}:{123,‘python’,(‘python’,123)}; #使用{}建立集合

B = set("pypy123"):{‘1’,‘p’,‘2’,‘3’,‘y’}; #使用set()建立集合

6.1.2 集合操作符

并,差,交,补

6.1.3 集合处理方法

6.1.4 集合类型应用场景

包含关系比较;数据去重:集合类型所有元素无重复;

ls = ["p", "p", "y", "y", 123] s = set(ls) #利用了集合无重复元素的特点 lt = list(s) #将集合转换为列表

6.2 序列类型及操作

序列类型定义;序列类型处理函数及方法;元组类型及操作;列表类型及操作;序列类型应用场景;

6.2.1 定义

序列是具有先后关系的一组元素:是一维元素向量,元素类型可不同;类似数学元素;元素间由序号引导,通过小标访问序列的特定元素;序列是一个基类类型:里面有字符串类型,元组类型,列表类型;反向递减,正向递增;

6.2.2 处理函数及方法

5个函数和方法

6.2.3 元组类型及操作

元组是序列类型的一种扩展:一旦创建就不能被修改;使用小括号()或tuple()创建,元素间用逗号分隔;可使用小括号或不使用小括号;元组继承序列类型的全部通用操作:没有特殊操作;

6.2.4 列表类型及操作

列表是序列类型,创建后可随意修改;使用[]或list()创建,元素间用逗号分隔;

操作函数和方法

6.2.5 应用场景

数据表示:元组用于元素不改变的应用场景,更多用于固定搭配场景;列表更加灵活,最常用的序列类型;表示一组有序数据;元素遍历:for item in ls:;for item in tp:;数据保护:不希望数据被程序所改变,转换成元组类型(tuple());

# 6.1.3.pyA = {"python", 123, ("python", 123)}try:while True:print(A.pop(),end="")except:pass

123python('python', 123)

6.3 基本数据统计值计算

需求:给出一组数,对它们有个概要理解;

总个数:len()求和:for ... in平均值:求和/总个数方差:各数据与平均数差的平方的和的平均数中位数:排序,求中间值

# 6.3CalStatisticsV1.pydef getNum():#获取用户输入nums = []iNumStr = input("请输入数字(回车退出):")while iNumStr != "":nums.append(eval(iNumStr))iNumStr = input("请输入数字(回车退出):")return numsdef mean(numbers): #计算平均值s = 0.0for num in numbers:s = s + numreturn s/len(numbers)def dev(numbers, mean): #计算方差sdev = 0.0for num in numbers:sdev = sdev + (num - mean)**2return 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])/2else:med = numbers[size//2]return medn = getNum()m = mean(n)print("平均值:{},方差:{:.2},中位数:{}".format(m,dev(n,m),median(n)))

请输入数字(回车退出):1请输入数字(回车退出):2请输入数字(回车退出):3请输入数字(回车退出):4请输入数字(回车退出):5请输入数字(回车退出):平均值:3.0,方差:1.6,中位数:3

6.4 字典类型及操作

字典类型定义,字典处理函数及方法,字典类型应用场景

6.4.1 定义

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

6.4.2 处理函数及方法

6.4.3 应用场景

映射的表达;表达键值对数据,进而操作它们;

6.5 jieba库介绍

6.5.1 概述

中文分词第三方库;

6.5.2 jieba分词的三种模式

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

6.6 实例10:文本词频统计

6.6.1 问题分析

在英文中文中,出现哪些词,出现多少次?

6.6.2 hamlet英文词频统计

CalHamletV1.py

6.6.3 三国演义人物出场统计

CalThreeKingdomsV1.pyCalThreeKingdomsV2.py

# CalHamletV1.pydef getText():#获取文本,归一化处理文本txt = open("E:\python\learn\hamlet.txt","r").read() #打开文件txt = txt.lower()#将所有大写字母变成小写for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_{|}~"': #将文本中特殊符号替换为空格txt = txt.replace(ch," ")return txthamletTxt = 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) #对一个列表按照键值对的2个元素的第2个元素进行排序,排序方式为由大到小的倒排for i in range(10): #将前10位字数打印输出word, count = items[i]print("{0:<10}{1:>5}".format(word,count))

the 137to 99he 71and65hamlet 57of 52his52was49that 36king 31

#CalThreeKingdomsV1.py 三国演义人物出场文本统计import jiebatxt = open("E:/python/learn/threekingdoms.txt","r",encoding="utf-8").read()words = jieba.lcut(txt)counts = {}for word in words:if len(word) == 1:continueelse:counts[word] = counts.get(word,0) + 1items = 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))

曹操934孔明831将军761却说647玄德569关公509丞相488二人465不可435荆州420孔明曰 385玄德曰 383不能383如此376张飞348

#CalThreeKingdomsV2.py 三国演义人物出场文本统计import jiebatxt = open("E:/python/learn/threekingdoms.txt","r",encoding="utf-8").read()excludes = {"将军","却说","荆州","二人","不可","不能","如此"} #构建排除集合words = jieba.lcut(txt)counts = {}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) + 1for word in excludes:del counts[word]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))

曹操 1429孔明 1373刘备 1223关羽779张飞348商议344如何336主公327军士310吕布300左右291军马288次日270引兵269大喜265

点赞,关注,收藏👍,➕,👀点赞,关注,收藏👍,➕,👀点赞,关注,收藏👍,➕,👀

😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘

💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪💪

如果觉得《Python语法基础(U.6)-组合数据类型》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。