DAY6:组合数据类型

注:内容为听北理嵩天老师mooc内容所记笔记以便复习
一、集合类型及操作
集合:多个元素的无序组合
注意:无序,不存在相同元素
集合元素不可更改,不能是可变数据类型
1、集合用大括号**{ }表示,元素间用逗号分隔
2、建立集合类型用
{ }或者set()**
**>>>A={“python”,123,(“python”,123)}**使用了{ }建立集合
**>>>B=set(“pypy123”)使用了set()建立集合
{‘p’,‘1’,‘2’,‘3’,‘y’}大括号,逗号,无序,不重合元素
3、建立空集合类型,必须用
set{ }

4、S|T 并集合 S-T 减操作 S&T 交操作 S^T补操作
S<=T或是S=T或S>T
S|=T与S=S|T意思相同 ,类比另外三个
>>>A={“p”,“y”,123}
>>>B=set(“pypy123”)
>>>A-B AB中共同有的去除掉,留下A中的
{123}
>>>B-A AB中共同有的去除掉,留下B中的
{‘3’,‘1’,‘2’}
>>>A&B留下AB中都有的元素
{‘p’,‘y’}
>>>A|B AB中的元素合并
{‘1’,‘p’,‘y’,‘2’,‘3’,123}
>>>A^B 不同时在AB中的元素
{‘2’,‘1’,‘3’,123}
5、s.add(x) 将x增加到s
s.discard(x) 移除s中的元素x
s.remove(x) 移除x,如x不在集合s中,产生keyerror报错
s.clear() 移除所有元素
s.pop()随机返回s的一个元素
s.copy()返回集合s的一个副本
len(s) 返回s的元素个数
x in s 判断x是否在s中
x not in s
set(x) 将x变成一个集合
数据去重
>>>ls=[“p”,“p”,“y”,“y”,123]
>>>s=set(ls) 转换为集合去重
{‘p’,‘y’,123}
>>>lt=list(s) 将集合转换为列表
[‘p’,‘y’,123]
二、序列类型及操作
序列:元素存在正向递增、反向递减
序列类型分为:字符串类型、元组类型、列表类型
x in s 判断x是否在序列s中
x not in s
s+t 连接两个序列
sn或ns s复制n次
s[i] 索引,返回第i个元素
s[i:j]或s[i:j:k] 切片
len(s) 返回s的元素个数
min(s)
max(s)
s.index(x) 找出第一次出现x的位置
s.index(x,i,j)
s.count(x) 返回序列中x出现的总次数
1、元祖是序列类型的一种拓展,一旦被创建就不能修改
使用
小括号()或tuple()**创建,逗号分隔
可以使用或不适用小括号
元祖继承了序列的全部通用操作
2、列表是一种序列类型,创建后可随意修改
**方括号[ ]或list()*创建,逗号分隔
ls[i]=x 替换列表ls第i个元素为x
ls[i:j:k]=lt 列表lt替换ls切片后对应元素子列表
del ls[i] 删除第i元素
del ls[i:j:k]
ls+=lt lt中的元素添加到lt中
ls
=n 复制n次ls中的元素
ls.append(x) ls最后添加一个元素x
ls.clear() 删除所有元素
ls,copy() 生成一个新列表,复制ls中的所有元素
ls.insert(i,x) 在列表ls的第i位置添加一个元素x
ls.pop(i) 将第i位置元素取出并删除
ls.remove(x) 将列表ls中出现的第1个元素x删除
ls.reserve(x) 翻转
元组用于元素不改变的应用场景,更多用于固定搭配场景
列表更加灵活,最常用
3、基本统计值:总个数,求和,平均值,方差,中位数
def getNum():
nums=[ ]
iNunstr=input(“请输入数字(回车退出):”)
while iNunstr!=" ":
nums.append(eval( iNunstr))
iNunstr=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[sze//2]
return med

    n=getNum()
    m=mean(n)
    print("平均值{ },方差{ },中位数{ }".format(m,dev(n,m),median(n)))

4、字典类型及操作
字典类型是映射的体现
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序
采用大括号**{ }dict()创建,用冒号:表示键值对
{<键1>:<值1>,<键2>:<值2>,…}
del d(k) 删除键k对应的数据值
k in d 键k是否在字典d中
d.keys() 返回所有键信息 返回的是key类型
d.values() 返回所有值信息 返回的是value类型
d.items() 返回所有键值对信息
d.get(k,) 键k存在,则返回相应值,不在则返回default值
d.pop(k,) 键k存在,则取出相应值,不在则返回default值
d.popitem() 随机取出一个键值对,以元组形式返回
d.clear() 删除所有键值对
len(d) 返回字典d中元素的个数
定义
空字典:d={ }**
模块五:jieba库,中文分词第三方库,需要额外安装
(cmd命令行)pip install jieba
**精确模式:**把文本精确的分开,不存在冗余单词
**全模式:**文本中所有可能的词语都扫描,有冗余
**搜索引擎模式:**对长词进行切分
jieba.lcut(s) 精确模式,返回一个列表类型的分词结果
jieba.lcut(s.cut-all=True) 全模式,有冗余
jieba.lcut-for-search(s) 存在冗余,搜索引擎模式
jieba.add-word(w) 增加新词
文本词频统计
def gettext():
txt=open(“halmlet.txt”.“r”).read()
txt=txt.lower()
for ch in ‘!"#$%&()*±./:;<=>?@[\]]^_’{|}~’:
txt=txt.replace(ch," “)
return txt
halmlettxt=gettext()
words=halmlettxt.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) 列表类型的sort方法,排序
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:
countinue
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))

字典翻转输出
s = input()
try:
d = eval(s)
e = {}
for k in d:
e[d[k]] = k
print(e)
except:
print(“输入错误”)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值