组合数据类型

一、集合类型及操作

1.集合类型

-集合元素间无序,每个元素唯一,集合元素不能是可变数据类型

-使用{}或set函数建立集合

2.集合操作符

①并 | ②差 - ③交 & ④补 ^

⑤ <=、< ⑥ >=、>

⑦增强操作符

  • S |= T:更新集合S,包含集合S和T中的所有元素
  • S -= T,更新集合S,包括在集合S但不在T中的元素
  • S &=T,更新集合S,包括同时在集合S和T中的元素
  • S ^= T,更新集合S,包括集合S和T中的非相同元素

3.集合处理方法

① .add(x):将x加入到集合中

② .discard(x):从集合中移除x,若集合中不存在x,不报错

③ .remove(x):从集合中移除x,若集合中不存在x,产生KeyError异常

④ .clear():移除集合中所有元素

⑤ .pop():随机返回集合一个元素,更新集合,若集合为空产生KeyError异常

⑥ .copy():返回集合的一个副本

⑦ len(S):返回集合S的元素个数

⑧ x in S:判断x是否在集合S中,在返回True

⑨ x not in S:判断x是否在集合S中,不在返回True

⑩ set(x):将其他类型变量x转变为集合类型

for … in方式遍历组合:

>>> A={"p","y",123}
>>> for item in A:print(item,end="")123py

while方式遍历组合:

>>> A={"p","y",123}
>>> try:while True:print(A.pop(),end="")
except:pass123py

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

1.序列定义

①序列:具有先后关系的一组元素,是一维元素变量,元素类型可不同

②序列的分类

  • 字符串类型
  • 元组类型
  • 列表类型

③反向递减序号、正向递增序号

2.序列处理函数及方法

①六个操作

②五个函数

-len(s):返回s长度

-min(s):返回s中最小元素

-max(s):返回s中最大元素

s.index(x)或s.index(x,i,j):返回s从i开始到j位置中第一次出现x的位置

元组类型及其操作

-使用小括号()或tuple()创建,元素间用逗号分隔

-创建后不能修改

>>> creature = "cat","dog","rabbit","human"
>>> color = (0x001100,"blue",creature)
>>> creature
('cat', 'dog', 'rabbit', 'human')
>>> color
(4352, 'blue', ('cat', 'dog', 'rabbit', 'human'))
列表类型及其操作

-使用方括号[]或list()创建,元素间用逗号分隔

-创建后可以随意修改

-列表操作

  • ls[i]=x
  • ls[i:j:k]=lt:使用列表lt替换ls切片后所对应元素子列表
  • del ls[i]
  • del ls[i:jK]:删除列表ls中第i到j以k为步长的元素
  • ls+=lt:更新ls,将lt增加到ls中
  • ls*=n:更新ls,将其元素重复n次
>>> ls=["00","11","22","33",44]
>>> ls[1:2]=["a","b","c","d"]   #替换
>>> ls
['00', 'a', 'b', 'c', 'd', '22', '33', 44]
>>> del ls[::3]                 #删除列表ls中以3为步长的子序列
>>> ls
['a', 'b', 'd', '22', 44]

-列表函数或方法

  • .appen(x):在列表ls最后添加元素x

  • .clear():删除ls所有元素

  • .copy():生成一个新列表,赋值ls中所有元素

  • .insert(i,x):在列表ls第i位置增加元素x

  • .pop(i):取出ls第i位置元素并删除

  • .remove(x):将ls中出现的第一个元素x删除

  • sorted(s):列表排序

三、实例9:基本统计值计算

1.分析

求总个数、求和、平均值、方差、中位数

2.代码

#CalStatistics.py
def getNum():               #获取用户输入(长度不定)nums=[]iNumStr=input("请输入数字(回车退出):")while iNumStr!="":nums.append(eval(iNumStr))iNumStr=input("请输入数字(回车退出):")return numsdef mean(numbers):         #计算平均值s=0.0for num in numbers: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 meddef main():n=getNum()m=mean(n)print("平均值:{},方差:{},中位数:{}".format(m,dev(n,m),median(n)))main()
请输入数字(回车退出):1
请输入数字(回车退出):5
请输入数字(回车退出):2
请输入数字(回车退出):8
请输入数字(回车退出):9
请输入数字(回车退出):11
请输入数字(回车退出):4
请输入数字(回车退出):
平均值:5.714285714285714,方差:3.728908942943218,中位数:8

四、字典类型及操作

1.字典类型定义

-键值对:键是数据索引的扩展

-字典是键值对的集合,键值对之间无序

-采用大括号{}和dict()创建,键值对用冒号:表示

(集合和字典都用{}表示,但集合不能直接使用{}生成,字典可以)

>>> d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>> d["中国"]
'北京'
>>> dd={}               #创建空字典
>>> type(dd)
<class 'dict'>

2.字典类型处理函数及方法

  • del d[k]:删除字典d中键k对应的数据值

  • k in d:判断键k是否存在于字典中

  • .keys():返回字典d中所有的键信息

  • .values():返回字典d中所有的值信息

  • .items():返回字典d中所有的键值对信息

  • .get(k,):若k存在返回对应值,不存在则返回值

  • .pop(k,):若k存在取出对应值,不存在则返回值

  • .popitem():随即从字典d中取出一个键值对,以元组形式返回

  • .clear():删除所有的键值对

  • len(d):返回字典d中元素个数

五、模块5:jieba库的使用

1.jieba库

①中文分词第三方库,需要额外安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba

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

2.三种模式

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

3.常用函数

① .lcut(s):精确模式,返回一个列表类型的分词结果

② .lcut(s,cut_all=True):全模式分词,存在冗余

③ .lcut_for_search(s):搜索引擎模式,存在冗余

④ .add_word(w):向分词词典增加新词w

六、实例10:文本词频统计

1.Hamlet英文词频统计

#CalHamletV1.py
def getText():txt = open("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)
for i in range(10):word, count = items[i]print ("{0:<10}{1:>5}".format(word, count))

2.《三国演义》人物出场统计

#CalThreeKingdomsV2.py
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("threekingdoms.txt", "r", encoding='utf-8').read()
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) + 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))

6 Python组合数据类型相关推荐

  1. Python组合数据类型之序列类型

    单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 序列 ...

  2. Python组合数据类型之集合类型

    单元概述 主要解决问题:让程序更好地处理一组数据 三类重要组合数据类型:集合类型.序列类型和字典类型 学完本章,我们能够在头脑中建立集合.序列和字典的模式来表达对一组数据的表达和处理 1. 定义 集合 ...

  3. python组合数据类型有哪些_Python学习之组合数据类型

    一.概述 计算机不仅仅要对单个变量表示的数据进行处理,还需要对一组数据进行批量处理.如: 给定一组单词{python,data,function,list,loop},计算并输出每个单词的长度. 给定 ...

  4. python组合数据类型实验_实验七 组合数据类型

    安徽工程大学 Python程序设计实验报告 班级物流192   姓名 徐敏 学号 3190505232 成绩 _____ 日期 2020.5.28  指导老师 修宇 实验七 组合数据类型 [实验目的] ...

  5. Python组合数据类型:字典dictionary

    一.组合数据类型container objects 组合数据类型container objects:能够表示多个数据的类型 集合类型:集合类型是元素集合,元素无序不重不变 序列类型:序列类型是元素向量 ...

  6. Python组合数据类型:序列sequence,列表list、元组tuple

    一.组合数据类型container objects 组合数据类型container objects:能够表示多个数据的类型 集合类型:集合类型是一个元素集合,元素无序不重不变 序列类型:序列类型是一个 ...

  7. Python组合数据类型:容器类型总览,(不)可变数据类型immutable、(不)可迭代对象iterable、迭代器iterator、生成器generator、语法糖

    一.组合数据类型container objects 组合数据类型container objects:能够表示多个数据的类型 集合类型:集合类型是一个元素集合,元素无序不重不变 序列类型:序列类型是一个 ...

  8. python组合数据类型实验_Python程序设计实验报告七:组合数据类型

    安徽工程大学 Python程序设计 实验报告 班级  物流192   姓名刘晨晨学号3190505214 日期   2020.5.27    指导老师修宇 [实验名称]实验七 组合数据类型 [实验目的 ...

  9. 第四章 Python组合数据类型

    第四章 组合数据类型 4.1 列表 4.1.1 列表的表达 序列类型:内部元素有位置关系,能通过位置序号访问其中元素 列表是一个可以使用多种类型元素,支持元素的增.删.查.改操作的序列类型 ls = ...

  10. Python—— 组合数据类型(模块5: jieba库的使用)(实例:基本统计值计算文本词频统计)

    前言 本篇主要介绍组合数据类型,以基本统计值计算为例,介绍函数使用和各种类型定义.以文本词频统计为例,介绍Jieba库的使用. (从本篇开始,出现的一些库中函数介绍以及部分简单代码都将以图片形式呈现) ...

最新文章

  1. 前端之路从零开始——第二周第四天笔记(background)
  2. Python入门 HelloWorld
  3. 贷款承诺(Loan Commitment)
  4. jieba 分词的三种模式
  5. some example of SAP odata annotation in metadata
  6. 【转载】ShowWindow函数
  7. python量化常用_Python量化常用函数
  8. .NET中方法的注意事项 明细
  9. 资料下载:敏捷个人的成长思考.pptx(第1次线下活动2011.04)
  10. 使用“ Row_Number”功能和WHILE循环创建滚动平均值报告
  11. 天国近了(一) -- 揭穿OOP神话
  12. 使用Redis进行搜索
  13. 内置模块--又称为常用模块
  14. 熊猫烧香能破坏计算机硬件吗,熊猫烧香病毒会伤害电脑硬件吗?
  15. 《Axure RP8网站和APP原型制作 从入门到精通》
  16. ROS——基于python3实现opencv图像处理任务
  17. Dataframe中筛选出满足条件的行
  18. Mysql的常见面试题 + 索引原理分析
  19. Adobe Photoshop CS6
  20. 202- K7 +C6678学习资料:基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心板

热门文章

  1. 各种视频监控上墙方案的比较
  2. 栈和队列求解迷宫问题(数据结构学习笔记)
  3. 考题:自定义组合view,如图三所示,包含昵称、头像和手机号
  4. 无线蓝牙骨传导耳机哪个品牌好?最值得入手的几个款式
  5. android手机太卡怎么办,安卓手机卡顿反应慢怎么办?学会了这些就可以轻松解决...
  6. 【自建分布式数据库详细指南】(一)起步:聊聊LINUX及POSTGRESQL
  7. java-net-php-python-jspm物流管理系统计算机毕业设计程序
  8. win10安装Zookeeper3.4.12
  9. 31、Power Query-行、列、表的构造
  10. 方舟起源服务器配置文件,方舟生存进化单机版配置ini文件 设置指引