栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

组合数据类型

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

组合数据类型

1 集合数据类型及操作 1.1 集合类型的定义(多个元素的无序组合) 集合类型和数学中的集合概念一致 集合元素中无序,每个元素唯一(不存在相同的元素) 集合元素不可更改,不能是可变数据类型

之所以建立空集合类型,必须用set(),而不是直接用{},那是因为{}表示的是字典 EG:

1.2 集合操作符 1.2.1 6个操作符

1.2.2 4个增强操作符

1.2.3 集合间操作符

EG: 1.3 集合处理方法  

 1.4 集合类型应用场景 1.4.1 包含类型比较

1.4.2 数据去重:集合类型所有元素无重复  2 序列类型及操作 2.1 序列类型定义(序列是具有先后关系的一组元素)

 序列是一个基类类型

2.1 序列处理函数及方法 2.1.1 序列类型通用操作符 EG:  2.2 5个函数和方法

 EG:

2.3 元组类型及操作(元组是序列类型的一种扩展)

EG:

 元组继承序列的全部通用操作

EG:

 2.4 列表类型及操作 列表类型是序列类型的一种扩展,十分常用

 

 EG:

 2.4.1 列表类型操作函数和方法

EG:

 

EG:

 2.4.2 测试

sorted() 作为 Python 内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。  2.5 序列类型应用场景

2.5.1 元素遍历 

2.5.2 数据保护  3 实例:基本统计值计算 3.1 问题分析

 

 方差计算公式:

3.2 代码
#获取多数据输入
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=num[size//2]
    return med

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

4 字典类型及操作 4.1 字典类型定义

 

 

4.2 字典类型的用法:在字典变量中,通过键获得值 EG:  4.3 字典处理函数及方法

EG:

 

EG:

 4.4 测试

4.5 字典类型应用场景 4.5.1 映射的表达  4.5.2 元素遍历  4.6 总结

5 jieba库的使用 5.1 jieba库概述

 5.2 jieba库安装 cmd:pip install jieba   5.3 jieba分词原理

5.4 jieba分词的三种模式  5.5 jieba库常用函数  6 文本词频统计 6.1 问题分析

 6.2 英文词频 6.2.1 代码
#CalHamletV1.py
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))
6.2.2 解析

1.counts[word]=counts.get(word,0)+1#是对进行计数word出现的频率进行统计,当word不在words时,返回值是0,当word在words中时,返回+1,以此进行累计计数。

6.3 汉文词频 6.2.1 代码1.0

#CalThreeKingdomsV1.py
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))
6.2.2 代码2.0

 

#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:
        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))

注意

本文题目来源为Python123平台和中国大学MOCC的《Python语言程序设计》课程, 主讲老师:嵩天、黄天羽、礼欣。如有侵权,立删。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018929.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号