python 对10进行排_python 1-3(2019-10-23 )下

实例:读取三国演义小说,并且绘制该小说的整篇词云

import jieba

from wordcloud import WordCloud

import imageio

# 通过imageio模块读取指定形状的图片

mask = imageio.imread('china.jpg')

with open('novel/threekingdom.txt','r',encoding=('UTF-8')) as f:

data = f.read()

# print(data)

#分词

word_list = jieba.lcut(data)

print(word_list)

print(len(word_list))

words = " ".join(word_list)

#绘制词云

WordCloud(

background_color='white',

font_path='msyh.ttc',

width=800,

height=600,

# 词云中词的最大数

# max_words=40,

# # 最大字体的大小

# max_font_size=80,

# # 最小字体的大小

# min_font_size =20,

mask=mask

).generate(words).to_file('三国词云1.png')

三国词云1.png

列表的排序

实例:打乱列表

li = []

for i in range(10):

li.append(i)

print('生成的i:',li)

# 随机打乱顺序

from random import shuffle

shuffle(li)

print('打乱顺序之后的li:',li)

对列表进行重新排序

1.使用list对象的sort方法

li.sort()

print('使用sort方法进行排序之后:',li)

reverse=True倒序排序

li.sort(reverse=True)

print('使用sort方法,指定reverse进行排序之后:',li)

2.使用内置函数sorted

li = sorted(li)

print('使用sorted函数排序之后',li)

li = sorted(li,reverse=True)

print('使用sorted函数,reverse=Ture 排序之后',li)

总结: sorted和sort的区别

1. sort仅针对列表进行排序,无返回值,会在原来的列表基础上修改

2. ssorted 是python中单独内置函数,可以对可迭代(iteratble)对象进行排序,

不局限于list,它不改变原生的数据,重新生成一个新的队列

函数 :将反复使用的代码封装起来,进行调用

格式

def 函数名(参数1,,,,):

pass

调用

函数名(参数1,,,,,)

实例:编写一个1-任意证书累加和的函数

def caculateNum(sum):

sum = 0

for i in range(1,num+1):

sum += i

return sum

num = int(input('请输入任意整数'))

print('1到{}之间的累加和为{}'.format(num,caculateNum(num)))

稍微复杂一些的列表排序

stu_info_list = [

{"name":"zhangsan","age":18,"addr":"浑南区"},

{"name":"lisi","age":50,"addr":"浑南区"},

{"name":"wangwu","age":3,"addr":"浑南区"},

{"name":"zhaoliu","age":35,"addr":"浑南区"},

{"name":"tianqi","age":20,"addr":"浑南区"},

]

print('排序前:',stu_info_list)

def sort_by_age(x):

return x["age"] #如果年龄如字符串"18","50"...,则 return int(x["age"],)

pass

# 对学生信息进行排序 key 是指定按照什么进行排序,它接收的是一个自定义函数的名字

stu_info_list.sort(key=sort_by_age)

print('排序后:',stu_info_list)

匿名函数

lambda 表达式

格式:

lambda 参数1,参数2,...:表达式

注意:参数可以有多个,但是返回的表达式只允许一个

实例: 两个数相加

def sum_tow_num(x,y):

return x+y

sum_tow_num = lambda x,y:x+y

print(sum_tow_num(1,5))

使用带有匿名函数的表达式排序

stu_info_list = [

{"name":"zhangsan","age":18,"addr":"浑南区"},

{"name":"lisi","age":50,"addr":"浑南区"},

{"name":"wangwu","age":3,"addr":"浑南区"},

{"name":"zhaoliu","age":35,"addr":"浑南区"},

{"name":"tianqi","age":20,"addr":"浑南区"},

]

stu_info_list = sorted(stu_info_list,key=lambda items:items['age'],reverse=True)

print(stu_info_list)

实例:三国人物TOP10排名

# 读取文件

import jieba

with open('novel/threekingdom.txt','r',encoding='UTF-8') as f:

data = f.read()

# 分词

words_list = jieba.lcut(data)

print(words_list)

# 构建一个容器,存储我们要的数据

# {"夏侯渊":34,"害怕":33......}

counts = {}

# 遍历wordlist 目标是筛选出人名

for word in words_list:

# print(word)

if len(word)<=1:

# 过滤无关词语即可

continue

else:

# 向字典里counts里更新值

# counts[word] = 字典中原来该词出现的次数 + 1

# counts["正文"] = counts["正文"] +1

counts[word] = counts.get(word,0) + 1

print(counts)

# 排序筛选

# 把字典转化成列表[(),()]

items = list(counts.items())

# 按照词频次数进行排序

items.sort(key=lambda x:x[1],reverse=True)

# 显示出现词语前20的词

for i in range(20):

# 将返回的数据拆开,拆包

# print(items[i])

role,count = items[i]

print(role,count)

# 删除无关词语

# 展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值