python基础(七)组合数据类型、jieba分词库

集合

不可变数据类型
建立:

A={"python",123,("python",123)} #使用{}建立集合
B=set("pypy123")                #使用set建立集合
print(A)                        #{123, 'python', ('python', 123)}
print(B)                        #{'2', 'p', '3', 'y', '1'} 集合元素没有顺序

集合运算:
S|T 返回一个新集合S∪T
S-T 返回一个新集合S-T
S&T 返回一个新集合S∩T
S^T 返回一个新集合,包括S、T中的非相同元素
S<=T/S<T/ S>=T/S>T 返回True/False

S|=T 返回一个新集合S∪T,赋予S
S-=T 返回一个新集合S-T,赋予S
S&=T 返回一个新集合S∩T,赋予S
S^=T 返回一个新集合,包括S、T中的非相同元素,赋予S

集合的方法:
S.add(x) 如果x不在集合S中,将x增加到S移除S中元素x
S.discard(x) 如果x不在集合S中,不报错
S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear() 清空
S.pop() 随机返回一个元素并移除,S为空返回Keyerror
S.cppy() 返回集合S的一个副本
len(S) 返回集合S的元素个数
x in S 判断S中元素x,x在集合S中,返回True,否则返回False
x not in S 判断S中元素x,x不在集合S中,返回True,否则返回False
set(x) 将其他类型变量转成集合类型

遍历集合的两种办法:

for item in A:
    print(item,end=" ")
    
print()

try:
    while True:
        print(A.pop(),end=" ")
except:
    pass

数据去重

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

序列

具有先后关系的一组元素(一维元素向量,元素类型可以不同)
可以通过标号访问
基本类型,平时用的更多的是它的延申类型(字符串,元组,列表)
在这里插入图片描述
len(s) 返回序列s的长度(元素个数)
min(s) 返回序列s的最小元素,s中元素需要可比较
max(s) 返回序列s的最大元素,s中元素需要可比较
s.index(x) 返回序列s第一次出现元素x的位置
s.index(x,i,j) 返回序列s从i到j位置中第一次出现元素x的位置
s.count(x) 返回序列s中出现x的总次数

元组

元组是一种序列类型,一旦创建不能更改(保护数据)
用()或者tuple()创建
继承了序列类型的所有操作

列表

一种序列类型
用[]创建
用等号直接赋值列表相当于“引用”

方法:
del ls[i]
del ls[i:j:k]
ls+=lt
ls*=n
ls.append(x) 增加最后一个元素
ls.clear() 删除所有元素
ls.copy() 生成新链表,赋值ls中所有元素
ls.insert(i,x) 第i个位置添加x
ls.pop(i) 将第i个取出并删除
ls.remove(x) 删除第x个元素
ls.reverse() 反转

字典

映射:对应键(索引)和值(数据)的关系
列表的序列号为一种默认索引
用{}或者dict{}创建,键值对用:表示:<字典变量>={<键1>:<值1>,…,<键n>:<值n>}

方法:
d[i]=3 赋值(要确定key已存在)
del[k] 删除字典的中键k对应的数据值
k in d 判断k是否在字典d中
d,keys() 返回字典d中所有键信息
d.values() 返回字典d中所有值信息
d.get(k,< default>) 键k存在,则返回相应值,不在则返回值
d.pop(k,< default>) 键k存在,则取出相应值,不在则返回值
d.popitem() 随机从字典d中取出一个键值对,以元组形式返回
d.clear() 删除所有的键值对
len(d) 返回字典d中元素的个数

jieba库

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

jieba.lcut(s) 精确模式,返回一个列表类型的分词结果
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型的分词结果,存在冗余
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型的分词结果,存在冗余
jieba.add_word(w) 向分词词典增加新词

英文单词出现次数统计

import 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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值