Python实验4 列表与字典应用
目的 :熟练操作组合数据类型。
试验任务:
- 基础:生日悖论分析。如果一个房间有23 人或以上,那么至少有两
个人的生日相同的概率大于50%。编写程序,输出在不同随机样本数
量下,23 个人中至少两个人生日相同的概率。
源码:
import random
def has_duplicate_birthdays():
birthdays = [random.randint(1, 365) for _ in range(23)]
return len(set(birthdays)) != len(birthdays)
def calculate_probability(sample_size):
count = 0
for _ in range(sample_size):
if has_duplicate_birthdays():
count = count + 1
return count / sample_size
不同的随机样本数量
sample_sizes = [100, 1000, 10000, 100000]
for size in sample_sizes:
probability = calculate_probability(size)
print(f"当样本数量为 {size} 时,23 个人中至少两个人生日相同的概率为: {probability:.4f}")
运行截图:

- 进阶:统计《一句顶一万句》文本中前10 高频词,生成词云。
源码:
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
def generate_wordcloud(file_path):
try:
# 读取文本文件
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 分词
words = jieba.lcut(text)
# 过滤停用词,这里简单过滤单字和一些常见无意义符号
stopwords = set([',', '。', '、', '的', '是', '在', '和', '也', '有', '不'])
filtered_words = [word for word in words if word not in stopwords and len(word) > 1]
# 统计词频
word_counts = Counter(filtered_words)
# 获取前 10 高频词
top_10_words = word_counts.most_common(10)
print("前 10 高频词:")
for word, count in top_10_words:
print(f"{word}: {count}")
# 生成词云
wordcloud = WordCloud(font_path='simhei.ttf',
background_color='white',
width=800,
height=600).generate_from_frequencies(word_counts)
# 显示词云
plt.figure(figsize=(8, 6))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
except FileNotFoundError:
print(f"错误:未找到文件 {file_path},请检查文件路径是否正确。")
except Exception as e:
print(f"发生未知错误:{e}")
file_path = 'yi.txt'
generate_wordcloud(file_path)
运行截图:

- 拓展:金庸、古龙等武侠小说写作风格分析。输出不少于3 个金庸(古
龙)作品的最常用10 个词语,找到其中的相关性,总结其风格。
源码:
import jieba
from collections import Counter
import re # 导入正则表达式模块
def count_word_frequencies(file_path, top_n=10):
with open(file_path, 'r', encoding='utf-8') as file:
text = file.read()
# 使用 jieba 进行分词
words = jieba.lcut(text)
# 排除一些常见的无意义词汇(停用词)
stopwords = set('的 了 是 在 和 有 个 与 不 一 我 他 以 也 子 之 幺'.split())
filtered_words = [word for word in words if word not in stopwords and len(word.strip()) > 1]
# 增加对标点符号的过滤
filtered_words = [word for word in filtered_words if not re.match(r'^[\W_]+$', word)]
# 统计词频
word_counts = Counter(filtered_words)
# 获取出现频率最高的前 top_n 个词
most_common_words = word_counts.most_common(top_n)
return most_common_words
调用函数并打印结果
file_paths = ['天龙八部.txt', '神雕侠侣.txt']
for file_path in file_paths:
most_common_words = count_word_frequencies(file_path, top_n=10)
print(f"小说《{file_path}》中前十高频词汇为:")
for word, count in most_common_words:
print(f"{word}")
print("\n" + "-"*50 + "\n")
运行截图:

Python实验4 列表与字典应用的更多相关文章
- python字符串、列表和字典的说明
python字符串.列表和字典的说明 字符串.列表.字典 字符串的作用存储一段数据信息.例如 info = '我爱北京天安门' ,在调取的时候可以直接调取,灵活方便,print(info) 就可以把刚 ...
- [转载]Python 元组、列表、字典、文件
python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...
- python学习之列表和字典
列表 基本操作>>>len([1,3,4])3 >>>[1,2,3]+[4,5,6] +号两边必须是相同类型[1,2,3,4,5,6] >>> ...
- python 1:列表和字典
初学Python, 对列表和字典的嵌套使用. phoneBook = [] #列表 list peopleInfo = {} #字典 dict i=0 while i<3: peopleInfo ...
- python中的列表和字典
列表和字典的区别: 列表是有序排列的一些物件,而字典是将一些物件(键)对应到另外一些物件(值)的数据结构; 应用场景: 字典 各种需要通过某个值去查看另一个值的场合,也就是一个虚拟的“查询表”,实现方 ...
- python开发技巧---列表、字典、集合值的过滤
主要学习列表,字典,集合表达式的应用: 列表的解析式: 生成一个随机列表: In [4]: datalist = [randint(-10,10) for _ in range(10)] In [5] ...
- Python之路-python数据类型(列表、字典、字符串、元祖)操作
一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1. 1.增加 #name = ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- Python 第二篇:python字符串、列表和字典的基本操作方法
本文基于python 3.5.1 python常见的数据类型有字串.列表.元组.字典等,本文将详细介绍每一种数据类型的操作方法. 一:str字串的操作方法: 1.capitalize()--> ...
- Python学习三|列表、字典、元组、集合的特点以及类的一些定义
此表借鉴于他人 定义 使用方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner', ...
随机推荐
- c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/18729664 第一 简介 又是好久没更新了,今天介绍个半导体/led行业生成晶圆片map图的小 ...
- window本地部署deepseek
window本地部署deepseek 学习自[[教程]DeepSeek本地免费部署教程,丝滑不卡顿!带你解锁隐藏功能!]https://www.bilibili.com/video/BV1viFaeB ...
- PowerShell开发小工具 · 四张照片拼成一张
小工具的设计与实现------选四张照片拼成一张照片. 很经典的应用情景,市面上有很多类似的小软件,特别是手机应用.为了方便学习巩固PowerShell,今天笔者使用它来实现. [设计思路] 选择四张 ...
- camunda工作流实战项目(表单设计器+流程编辑器,零代码创建流程)
该项目的plus版本已制作完成,文章链接 [plus版]camunda工作流实战项目 一.整体情况介绍 基于ruoyi平台和camunda工作流开发而成,结合bpmn.js流程编辑器和vform表单设 ...
- php查询结果汉字乱码解决方法
问题描述:使用php查询数据显示,显示的结果中所有汉字乱码 问题及解决:这种情况是编码造成的,检查数据库及页面编码是否一致,也可在页面增加: header('Content-Type:text/htm ...
- Ollama+DeepSeek+SlackBot
技术背景 想必最近有在部署DeepSeek大模型的人,看标题就知道这篇文章在做什么事情了.由于Ollama对于IP的监听缺乏安全防护,并且内网部署的Ollama模型对于外网来说也是不可见的,而如果使用 ...
- 【译】Visual Studio 中新的强大生产力特性
有时候,生活中的小事才是最重要的.在最新版本的 Visual Studio 中,我们增加了一些功能和调整,目的是让您脸上带着微笑,让您更有效率.这里是其中的一些列表,如果您想要完整的列表,请查看发行说 ...
- DeepSeek+Claude强强联手,使用AI驱动DjangoStarter 3.1框架升级
前言 上个月底培训了一周就没时间更新博客 上周有一些空闲时间,就继续体验最近很火的AI辅助编程 之前的文章中有说到我配置好了 VSCode + Cline 插件搭配本地部署的 DeepSeek 来实现 ...
- linux生成ssh密钥
前言 我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口 ...
- Oracle 给用户赋予dblink权限,创建dblink
1.判断用户是否具备创建database link 的权限 一:查看当前登录用户(如果查询有返回行,则表示具备创建权限,否则,需要创建权限) 1 select * from user_sys_priv ...