zoukankan      html  css  js  c++  java
  • 关于内存的占用和思路的拓展

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

    随意写一个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])#这样取值,而不用切片不占用内存

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

  • 相关阅读:
    寒假学习进度报告(一)
    【web】公文流转系统制作进度(一)(2019/12/9)
    【规律】A Rational Sequence
    【记忆化搜索】Happy Happy Prime Prime
    【背包问题】PACKING
    【动态规划】正则表达式匹配
    【数据结构】P1310 表达式的值
    【数据结构】P1449 后缀表达式
    【数据结构】P1054 等价表达式
    【数据结构】表达式求值
  • 原文地址:https://www.cnblogs.com/RyanJin/p/8244771.html
Copyright © 2011-2022 走看看