目的 :熟练操作组合数据类型。

试验任务:

  1. 基础:生日悖论分析。如果一个房间有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}")

运行截图:

  1. 进阶:统计《一句顶一万句》文本中前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)

运行截图:

  1. 拓展:金庸、古龙等武侠小说写作风格分析。输出不少于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 列表与字典应用的更多相关文章

  1. python字符串、列表和字典的说明

    python字符串.列表和字典的说明 字符串.列表.字典 字符串的作用存储一段数据信息.例如 info = '我爱北京天安门' ,在调取的时候可以直接调取,灵活方便,print(info) 就可以把刚 ...

  2. [转载]Python 元组、列表、字典、文件

    python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...

  3. python学习之列表和字典

    列表 基本操作>>>len([1,3,4])3 >>>[1,2,3]+[4,5,6]    +号两边必须是相同类型[1,2,3,4,5,6] >>> ...

  4. python 1:列表和字典

    初学Python, 对列表和字典的嵌套使用. phoneBook = [] #列表 list peopleInfo = {} #字典 dict i=0 while i<3: peopleInfo ...

  5. python中的列表和字典

    列表和字典的区别: 列表是有序排列的一些物件,而字典是将一些物件(键)对应到另外一些物件(值)的数据结构; 应用场景: 字典 各种需要通过某个值去查看另一个值的场合,也就是一个虚拟的“查询表”,实现方 ...

  6. python开发技巧---列表、字典、集合值的过滤

    主要学习列表,字典,集合表达式的应用: 列表的解析式: 生成一个随机列表: In [4]: datalist = [randint(-10,10) for _ in range(10)] In [5] ...

  7. Python之路-python数据类型(列表、字典、字符串、元祖)操作

    一.列表: 列表的语法,以中括号开通和结尾,元素以逗号隔开.例如:name = [] 列表是以下标取值,第一个元素下标是0,第二个元素下标是1,最后一个元素下标是-1.   1.增加 #name = ...

  8. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  9. Python 第二篇:python字符串、列表和字典的基本操作方法

    本文基于python 3.5.1 python常见的数据类型有字串.列表.元组.字典等,本文将详细介绍每一种数据类型的操作方法. 一:str字串的操作方法: 1.capitalize()-->  ...

  10. Python学习三|列表、字典、元组、集合的特点以及类的一些定义

    此表借鉴于他人 定义 使用方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner', ...

随机推荐

  1. NET中三种主机简单理解

    在NET中有三个不同的主机: .NET WebApplication 主机,也称为最小主机. 这是.NET 6中的一个新特性,旨在提供最小的启动时间和内存消耗.最小主机只包括.NET运行时的最基本组件 ...

  2. [BZOJ2194] 快速傅立叶之二 题解

    看名字,然后准备转化为多项式乘法. \[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \] 将 \(a\) 反转,得: \[c_k=\sum_{i=0}^{n-k-1}a_{n-i ...

  3. 如何通过 Python 实现一个消息队列,为在线客服系统与海外运营的APP对接

    我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统.陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户. 而我收到的用户需求也越来越多,产品化的 ...

  4. C语言的头文件包含,竟存在这么多知识点!

    文章来自:https://zhuanlan.zhihu.com/p/472808057 相关文章连接:头文件包含是可以嵌套的_[C语言]- 预处理指令3 - 文件包含! 很多事不深入以为自己懂了,但真 ...

  5. @autowired注解报错原因及解决办法

    @autowired 注入dao层的时候,标红报错,但不影响编译使用 按照严格的spring注解方式在dao层加入@Repository注解

  6. csharp入门经典

    C#简介 .NET Framework是Microsoft为开发应用程序而创建的一个具有革命意义的平台,它有运行在其他操作系统上的版本 .NET Framework的设计方式确保它可以用于各种语言,包 ...

  7. 读论文-序列感知推荐系统(Sequence-Aware Recommender Systems)

    前言 今天读的论文为一篇于2018年发表在(ACM computing surveys (CSUR))的论文,这篇文章主要讲述了序列感知推荐系统(Sequence-Aware Recommender ...

  8. 在 Aspire 项目下使用 AgileConfig

    什么是 Aspire .NET Aspire 是一组工具.模板和包,用于构建易于监控的.可投入生产的应用程序..NET Aspire 通过一系列 NuGet 包交付,这些包通过启动或解决现代应用开发中 ...

  9. python进程 - 调试报错 you are not using fork to start your child processes

    在走这段代码的时候报错了,记录一下我的调试过程,感觉有个思路来走就挺好的. 1.报错与解决 文件名字:ClassifierTest.py import torch import torchvision ...

  10. Dify 和 Manus 的技术架构差异

    Dify 框架能够部分实现 Manus 的功能效果,但在复杂任务自动化.多代理协作等领域存在技术差距. 一.核心功能对比 1. 任务拆解与执行能力 Dify:支持通过 Agent 模式 进行任务分解, ...