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', ...
随机推荐
- 无分类无tag
1 2 3
- [ABC297F] Minimum Bounding Box 2 题解
容斥真有趣. 有一个性质: 两个相同的子矩阵,对答案的贡献一定相同. 所以就只需要枚举矩阵大小即可. 我们设当前矩阵长 \(i\) 宽 \(j\)(对应的,\(H\) 为长,\(W\) 为宽),假如要 ...
- element-ui实现table表格的嵌套(table表格嵌套)功能实现
最近在做电商类型的官网,希望实现的布局如下:有表头和表身,所以我首先想到的就是table表格组件. 表格组件中常见的就是:标题和内容一一对应:像效果图中的效果,只用基础的表格布局是不行的,因此我想 ...
- 网线 - 568B接法
- AngleSharp :在 C# 中轻松解析和操作 HTML/XML 文档
AngleSharp 是一个 C# 库,主要用于解析和操作 HTML 和 XML 文档,类似于浏览器的 DOM 操作.允许你在 C# 中使用类似浏览器的方式处理网页数据,进行网页抓取.数据提取和处理等 ...
- CF2039D Shohag Loves GCD
思路(贪心 + 唯一分解定理) 这个题其实只需要考虑一件事:记答案数组为 \(a\),对于两个不同下标 \(i\) 和 \(j\),当 \(\gcd(i,j) = \min(i,j)\) 时,我们只需 ...
- HttpClient 进行soap请求
当你在使用C#的HttpClient进行SOAP请求时,确保你的代码类似于以下示例: using System; using System.Net.Http; using System.Text; u ...
- DeepSeek在M芯片Mac上本地化部署
在 Mac 上使用 Ollama 运行 DeepSeek-R1,并通过 Open-WebUI 提供 Web 端访问. 1. 安装 Ollama Ollama官方:https://ollama.com/ ...
- VScode美化
RESULT:EVA-初号机 配色 主题效果 1. 需要的东西 vs code background 插件 custom CSS and JS loader 插件 一些png素材,推荐网址: http ...
- Python 潮流周刊#93:为什么“if not list”比len()快2倍?(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...