Python入门笔记06 | 组合数据类型
一、主要组合数据类型
- 集合类型
- 序列类型
- 字典类型
二、集合类型及操作
1.集合类型的定义:多个元素的无序组合
1)集合元素之间无序,每个元素唯一,不存在相同元素
2)集合中的元素要求是不可变数据类型(列表类型是可变的数据类型)
2. 集合的表示:用{}表示,元素间用逗号分隔
3.集合的建立:
(1)建立集合类型用{}或set()函数
(2)建立空集合必须用set()函数
(3)示例
A = {"python",123,("yuyu",123)} #使用{}建立集合
#集合为{123,"python",("yuyu",123)}
B = set("yuyu123") #使用set()建立集合
#集合为{"y","u","1","3","2"}
4. 集合操作符
(1)6个操作符
(2)4个增强操作符 – 实现对集合的更新
(3)操作符实例
5. 集合处理方法
(1)
(2)方法实例
A = {"p","y",123}
try:
while True:
print(A.pop(),end="")
except:
pass
for…in… 与 while 方式都能遍历集合类型
6.集合类型应用场景
(1)包含关系比较
(2)数据去重
(利用集合中所有元素不能重复的特点,对一组数据中的重复元素进行删除)
#eg:将列表中的重复元素去除并仍以列表形式输出
ls = ["p","p","y","y",123]
A = set(ls)
lt = list(A) #将集合转换为列表
print(lt)
二、 序列类型及操作
1. 序列类型的定义:具有先后关系的一组元素
1)一维元素向量,元素类型可以不同,元素之间可以相同
2)类似于数学元素序列:s0,s1,s2,…sn-1
3)元素间由序号引导,通过下标访问序列的特定元素
2. 序列类型的衍生
(1)字符串类型
(2)元组类型
(3)列表类型
3. 序列处理函数及方法
(1)6个操作符
(2)操作符实例
#逆序输出列表内元素
ls = ["python","yuyu",123]
print(ls[::-1])
(3)5个函数和方法
4. 元组类型及操作
1)元组是一种序列类型,一旦创建就不能被修改
2)使用小括号()或tuple()创建,元素间用逗号分隔
3)可以使用或不使用小括号
5. 列表类型及操作
1)列表是一种序列类型,创建后可以随意被修改
2)使用方括号[]或list()创建,元素间用逗号分隔
3)列表中各元素类型可以不同,无长度限制
(1)操作函数及方法
(2)实例
(3)修改列表 – 增删改查
(4)实例
6. 序列类型应用场景
最主要作用:表示一组有序数据,进而操作它们
–元组用于元素不改变的应用场景,更多用于固定搭配场景
–列表更加灵活,它是最常用的序列类型
(1)元素遍历
(2)数据保护
如果不希望数据被程序改变,转换为元组类型
-
实例9:基本统计值计算
-
需求:给出一组数,对它们有个概要理解
–总个数、求和、平均值、方差、中位数 -
问题分析
-
代码
#分析数据
def getNum(): #得到用户输入的数据
nums = []
numstr = input("输入数字(回车退出):")
while numstr != "":
nums.append(eval(numstr))
numstr = input("输入数字(回车退出):")
return nums
def mean(numbers): #计算平均值
s = 0.0
for num in numbers:
s += num
return s / len(numbers)
def dev(numbers,mean):#计算方差
s = 0.0
for num in numbers:
s += (num-mean)**2
return pow(s / (len(numbers)-1),0.5)
def median(numbers): #计算中位数
sorted(numbers) #python内部排序函数
if len(numbers)%2==0:
return (numbers[len(numbers)//2-1]+numbers[len(numbers)//2] / 2)
else:
return numbers[len(numbers)//2]
n = getNum()
m = mean(n)
print("这组数据的平均值为{:.2f},方差为{:.2f},中位数为{}".format(m,dev(n,m),median(n)))
- 结果展示
三、 字典类型及操作
1. 字典类型定义
(1)映射:一种键(索引)和值(数据)的对应关系
(2)字典类型是映射的体现
1)键值对:键是数据索引的扩展 key->value
2)字典是键值对的集合,键值对之间无序
3)采用{}和dict()创建,键值对用冒号表示
(3)实例
(4)特殊点:{}方式默认生成字典类型,而不是集合类型
2. 字典处理函数及方法
3. 应用场景
映射的表达–表达键值对数据,进而操作它们
四、 jieba库的使用
jieba是优秀的中文分词第三方库
1. 原理:
(1)利用一个中文词库,确定汉字之间的关联概率
(2)汉字间概率大的组成词组,形成分词结果
2. jieba分词的三种模式
(1)精确模式:把文本精确切分开,不存在冗余单词
(2)全模式:把文本中所有可能的词语都扫描出来,有冗余
(3)搜索引擎模式:在精确模式基础上,对长词再次切分
3. 常用函数
-
实例10:文本词频特辑
-
需求分析:一篇文章出现了哪些词?哪些词出现得最多?(中文?英文?)
-
英文 Hamlet
#CalHamletV1.py
#归一化处理
def getText():
txt = open("hamlet.txt","r").read()
txt = txt.lower()
for c in '!"#$()*+,-./:;<=>?@[\\]^_`{|}~':
txt = txt.replace(c," ")
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)
#lamdba指定使用哪一个多元选项的列作为排序列,排列顺序从大到小
for i in range(10):
word,count = items[i]
print("{0:<10}{1:>5}".format(word,count))
- 中文 《三国演义》
#CalThreeKingdomsV1.py
import jieba
txt = open("三国演义.txt","r",encoding="utf-8").read()
words = 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))
- 结果
- 升级版 统计人物出场顺序
#CalThreeKingdomsV2.py
import jieba
txt = open("三国演义.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))
- 结果
注:笔记内容根据慕课:Python语言程序设计(北京理工大学 嵩天、黄天羽、礼欣)授课内容整理