关于内存的占用和思路的拓展

本文探讨了一种有效的文件内容分页显示方法,通过读取文件并按页展示内容,避免了大量数据一次性加载造成的资源浪费。文章对比了两种实现方式,一种是将所有内容加载到内存中再进行分页,另一种是按需读取,仅在内存中保留当前页数据,后者更节省内存。

遇到一个问题,题目是这样的:

随意写一个20行以上的文件
运行程序,先将内容读到内存中,
接收用户输入页码,每页5条,仅输出当页的内容

先贴出我的代码:
def func(page):  #在函数中输入页码
    lis = []     
    dic = {}
    with open('03name',encoding='utf-8') as f:
        for i in f:
            lis.append(i.strip())   #把文件中的每一行读取出来,去掉前后空格及换行符,放入列表

        count = 0
        while count < len(lis)/5 +1:  #给出一个循环,限制条件是整数的页码+1
            #这样不管最后一页有没有内容都放入字典中
            dic.setdefault(count + 1,lis[0+count*5:5+count*5]) #切片把每一页的内容都放入字典
            count += 1
        return dic[page]

print(func(6))

再给出答案的代码:

with open('03name',encoding='utf-8') as f:
    l = f.readlines()  #直接读每行内容放进列表
page_input = int(input('输入您要查找的页码:'))
page,mod = divmod(len(l),5)  #除余来获取文件内容的整数页和剩余几行内容
if mod:
    page += 1  #有余数则页码+1
if page_input > page or page_input < 0:  
    print('输入错误')
elif page_input == page and mod != 0:  #如果输入的是最后一页并且有余数
    for i in range(mod):                     
        print(l[(page_input - 1) * 5 + i])#那么打印列表中的剩余行
else:
    for i in range(5):  
        print(l[(page_input - 1)*5 + i])#这样取值,而不用切片不占用内存

很明显,答案表给出了另一种思路,并且这种思路只在内存中存储存放了一个包含文件内容的列,节省了空间

转载于:https://www.cnblogs.com/RyanJin/p/8244771.html

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集测试集(默认7:3)。 数据归一化:使用mapminmax将输入输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值