【无标题】

python语言程序设计-中国大学MOOC

----------学习笔记(六)

集合类型

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

集合操作

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

序列

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

元组

元组是序列类型的一种扩展
-元组是一种序列类型,一旦创建就不能被修改
-使用小括号()或tuple()创建,元素间用逗号分隔
-可以使用或不适用小括号
def func():
return 1,2 #1,2本身就是一个元组
在这里插入图片描述
在这里插入图片描述

列表

列表是一种序列类型,创建后可以随意被修改
-列表是一种序列类型,创建后可以随意被修改
-使用方括号[]或list()创建,元素间用逗号分隔
-列表中各元素类型可以不同,无长度限制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

序列类型应用场景

-元组用于元素不改变的应用场景,更多用于固定搭配场景
-列表更加灵活,它是最常用的序列类型
-最主要作用:表示一组有序数据,进而操作它们
元素遍历
for item in ls:
<语句块>
for item in tp:
<语句块>
在这里插入图片描述

基本统计值实例

在这里插入图片描述

#获得用户输入
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("平均值:{},方差:{:.2f},中位数:{}.".format(m,dev(n,m),median(n)))
字典

理解映射
-映射是一种键(索引)和值(数据)的对应
在这里插入图片描述
字典类型是映射的体现
-键值对:键是数据索引的扩展
-字典是键值对的集合,键值对之间无序
-采用大括号{}和dict()创建,键值对用冒号:表示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

jieba库

jieba是优秀的中文分词第三方库
-中文文本需要通过分词获得单个的词语
-jieba是优秀的中文分词第三方库,需要额外安装
-jieba库提供三种分词模式,最简单只需掌握一个函数
jieba库安装 (cmd下)—pip install jieba
-利用一个中文词库,确定汉字之间的关联概率
-汉字间概率大的组成词组,形成分词结果
-除了分词,用户还可以添加自定义的词组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文本词频统计实例
#英文统计-哈姆雷特高频词
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))
	
#中文统计-三国演义人物出场
import jieba
txt=open("threekingdoms.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))

在这里插入图片描述

#中文统计改进
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(15):
	word,count=items[i]
	print("{0:<10}{1:>5}".format(word,count))

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值