Life is short,Use Python!-----Python六杀!-----Python组合数据类型

集合、序列、字典、呵呵哒! ?(附上我礼貌又不失尴尬的微笑)


- 集合

  • 集合类型定义:多个元素的无序组合,元素不可重复
  • 建立方式:用 set() 或 {} ,元素用逗号分隔 (空集合只能用set)
  • 应用场景:比较包含关系、数据去重 等
基本操作符
S | T
返回一个 新的集合,包括 S和T中的所有 元素
S - T
返回一个 新的集合,包括 S但不在T中的 元素
S & T
返回一个 新的集合,包括 S和T公共部分 元素
S ^ T
返回一个 新的集合,包括 S和T中非相同 元素
S <= T 或 S < T
返回 Ture/False,判断S和T的 子集 关系
S >= T 或 S > T
返回 Ture/False,判断S和T的 包含 关系
增强操作符
S |= T
更新集合S,包括 S和T中的所有 元素
S -= T
更新集合S,包括 S但不在T中的 元素
S &= T
更新集合S,包括 S和T公共部分 元素
S ^= T
更新集合S,包括 S和T中非相同 元素
集合 处理方法
S.add(x)
如果x不在S中,将x增加到S
S.discard(x)
移除S中元素x,如果x不在S中, 不报错
S.remove(x)
移除S中元素x,如果x不在S中, 产生KeyError异常
S.clear()
移除S所有元素
S.pop()
随机返回S一个元素,更新S;若S为空, 产生KeyError异常
S.copy()
返回S的一个副本
集合通用 处理函数
len(S)
返回S元素个数
x in S
判断S是否有元素x,是则返回Ture,否则返回False
x not in S
判断S有无元素x,无则返回Ture,有则返回False
set(x)
将 其他类型 转变为 集合类型

- 序列(元组&列表)

  • 序列类型定义:一维有序向量,元素类型可以不同,用逗号分隔,可通过下标引导访问(正向从0,逆向从-1)
  • 应用场景:数据保护(元组)、元素遍历(列表)
序列通用 操作符
判断
x in s
x为s元素,返回Ture,否则返回False
x not in s
x为s元素,返回False,否则返回Ture
增补
s + t
连接s和t
s*n 或 n*s
将s复制n次
索引
s[i]
返回s中第i个元素
切片
s[i : j : k]
返回s中  第 i 到 j  以 k 为步长 的子序列( i 缺省至开头j 缺省至结尾,k 缺省为1)
序列通用 函数及方法
函数
len(s)
返回s的长度
min(s)
返回s的最小元素, 需要s中元素可比较
max(s)
返回s的最大元素, 需要s中元素可比较
方法
s.index(x,i,j)
返回s  第 i 到 j  中第一次出现元素x的下标
s.count(x)
返回s中出现x的次数

- 元组

元组类型及操作:不可修改,使用 () 或 tuple() 创建,小括号可选择使用

- 列表

列表类型及操作:随意修改,使用 [] 或 list() 创建,长度无限制

列表操作符
替换
ls[i] = x
替换ls第i元素为x
ls[i : j : k] = lt
替换ls切片部分为lt
删除
del ls[i]
删除ls中第i个元素
del ls[i: j : k]
删除ls 从i到j 以k为步长 的元素
更新
ls += lt
更新ls,将lt元素增加到ls中
ls *= lt
更新ls,将元素复制n次
列表处理方法
增补
ls.append(x)
在ls最后添加一个元素x
ls.insert(i,x)
在ls第 i 位置增加元素x
删除
ls.remove(x)
将ls中出现的第一个元素x删除
ls.clear()
删除ls所有元素
其他
ls.pop(i)
返回ls中第i个元素,并删除ls中元素x
ls.copy()
返回一个新列表,赋值ls中所有元素
ls.reverse()
将ls反转

- 字典

  • 字典类型定义:映射关系的体现,键值对(key-value)的集合
  • 建立方式:使用 {} 或 dict() 创建,键值对用 <键> : <值> 表示,用逗号分隔键值对
  • 应用场景:表达对应关系
字典处理函数及方法
del d[k]
删除d中键k对应的数据值
k in d
判断键k是否在d中,在返回Ture,否则返回False
d.keys()
返回d中 所有键 的信息
d.values()
返回d中 所有值 的信息
d.items()
返回d中 所有键值对 的信息
d.get(k,<default>)
若键k存在, 返回相应值,否则返回<default>值
d.pop(k,<default>)
若键k存在, 取出相应值,否则返回<default>值
d.popitem()
随机从d中取出一个键值对,以元组形式返回
d.clear()
删除所有的键值对
len(d)
返回字典d中键值对的个数

- jieba库

  • 优秀的第三方分词库
  • 返回 列表类型 的分词结果
精确模式
jieba.lcuts(s)
无冗余输出
全模式
jieba.lcuts(s,cut_all=True)
存在冗余输出
搜索引擎模式
jieba.lcut_for_search(s)
存在冗余输出
新词模式
jieba.add_word(w)
向词库添加新词w
>>> jieba.lcut("中国是一个伟大的国家")
['中国', '是', '一个', '伟大', '的', '国家']

文本词频统计

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:
        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))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值