python知识点总结(三)

news2024/12/23 13:45:27

在这里插入图片描述


python知识点总结三

  • 1、有一个文件file.txt大小约为10G,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现? 需要考虑的问题都有那些?
  • 2、交换2个变量的值
  • 3、回调函数
  • 4、Python-遍历列表时删除元素的正确做法,
    • 解决办法:
  • 5、装饰器的理解、并实现一个计时器记录执行性能
  • 6、输入某年某月某日,判断这一天是这一年的第几天
  • 7、python的内存管理机制以及调优手段
  • 8、内存溢出是什么?如何避免
  • 9、迭代器、可迭代对象、生成器
  • 10、用python代码实现内置max方法
  • 11、Python中yield的用法?
  • 12、使用lambda函数对list排序foo=[-5,8,0,4,9,-4,-20,-2,8,2,-4],正数从小到大,负数从大到小
  • 13、题目025:求1+2!+3!+...+20!的和

1、有一个文件file.txt大小约为10G,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现? 需要考虑的问题都有那些?

def get_lines():
    with open('file.txt','rb') as f:
        # return f.readlines()
        #分段读取
        while True:
            part=f.read(1024)
            if part:
                yield part
            else:
                return None


if __name__ == '__main__':
    for e in get_lines():
        print(e)

2、交换2个变量的值

a=1
b=2
#方法1
a,b=b,a
print(a,b)

#方法2
c=a
a=b
b=c

#方法3
a=a+b
b=a-b
a=a-b
print(a,b)

3、回调函数

def func(cb):
    #回调
    res=cb(8)
    return res

def callback2(x):
    return x*10

# func(callback)
res2=func(callback2)
print(res2)

4、Python-遍历列表时删除元素的正确做法,

背景

a = [1,2,3,4,5,6,7,8] 
for i in a: 
    if i>5: 
        pass
    else:
            a.remove(i)
            print(a)

运行结果

[2, 3, 4, 5, 6, 7, 8]
[2, 4, 5, 6, 7, 8]
[2, 4, 6, 7, 8]
[2, 4, 6, 7, 8]
[2, 4, 6, 7, 8]

因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果。

解决办法:

遍历在新的列表操作,
删除时在原来的列表操作。

方法1
a=[1,2,3,4,5,6,7]
aa=a[:]
for i in aa:
    if i>4:
        pass
    else:
        a.remove(i)
        print(a)



方法2
a=[1,2,3,4,5,6,7]
for i in range(len(a)-1,-1,-1):
    if a[i]>4:
        pass
    else:
        a.remove(a[i])
        print(a)

5、装饰器的理解、并实现一个计时器记录执行性能

class S2:

    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        start = time.time()
        res = self.func(*args, **kwargs)
        end = time.time()
        print('总时间:', end - start)
        return res


@S2
def func(a, b):
    time.sleep(2)
    return a + b

print(func(3, 4))

6、输入某年某月某日,判断这一天是这一年的第几天

def dayofyear():
    year = input('请输入年份:')
    month = input('请输入月份:')
    day = input('请输入天:')
    date1=datetime.date(year=int(year),month=int(month),day=int(day))
    date2=datetime.date(year=int(year),month=1,day=1)
    return (date1-date2).days+1

r=dayofyear()
print(r)

7、python的内存管理机制以及调优手段

调优手段:
1、使用生成器和迭代器:生成器和迭代器可以按需生成和处理数据,避免一次性加载大量的数据到内存。
2、使用适当的数据结果:选择合适的数据结构可以减轻内存占用。例如,是哟个集合代替列表可以避免重复元素占用额外的内存。
3、及时释放不再使用的对象:手动解除对不再使用的对象的引用,可以加速垃圾回收并释放内存。
4、使用内存分析工具:使用内存分析工具memory_profiler可以帮助我们分析内存使用情况,找到内存占用较大的部分,并进行优化。

8、内存溢出是什么?如何避免

由于内存是有限的,当计算机内存中存在大量的相互(循环)引用计数时,会占用大部分的内存;当新的变量进来时,但是内存不够用了,所以不会去开辟新的内存地址。

原因:
1、内存中加载的数据量过大,如一次从数据库取出过多数据,一般比如数据库查询未做分页处理。
2、对象循环引用
3、代码中存在死循环或者循环产生过多重复的对象实体
4、使用第三方软件的bug,一般引用第三方jar包过多会出现此类问题。
5、启动参数内存值设定的过小,这种可能性很小服务器参数设置一般会出现这类问题

解决:
第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)
第二步,检查错误日志,查看“OutOfMemory”错误前是否有其它异常或错误。
第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

重点排查以下几点:
1.检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
2.检查代码中是否有死循环或递归调用。
3.检查是否有大循环重复产生新对象实体。
4.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。

第四步,使用内存查看工具动态查看内存使用情况

9、迭代器、可迭代对象、生成器

https://blog.csdn.net/YZL40514131/article/details/119990819
https://blog.csdn.net/YZL40514131/article/details/119989244

10、用python代码实现内置max方法

l=[
    {'name':'zs','age':18},
    {'name':'ls','age':19},
    {'name':'ww','age':17}
]
print(max(l,key=lambda x:x['age']))



def my_max(*args,key=None):
    # args=([],)
    args=args[0] if len(args)==1 else args
    if key==None:
        max_=args[0]
        for n in args:
            if n > max_:
                max_=n
        return max_
    else:
        max_=args[0]
        for n in args:
            if key(n)>key(max_):
                max_=n
        return max_



print(my_max([1,2,3,8,5,6]))

print(my_max(l,key=lambda x:x['age']))

11、Python中yield的用法?

https://blog.csdn.net/YZL40514131/article/details/119989244

12、使用lambda函数对list排序foo=[-5,8,0,4,9,-4,-20,-2,8,2,-4],正数从小到大,负数从大到小

foo=[-5,8,0,4,9,-4,-20,-2,8,2,-4]
foo1=sorted(foo,key=lambda x:(x<0,abs(x)))
print(foo1)

[0, 2, 4, 8, 8, 9, -2, -4, -4, -5, -20]

13、题目025:求1+2!+3!+…+20!的和

def fun_tm():

    s=0
    t=1
    for n in range(1,21):
        t=t*n
        s=s+t
    print(s)
fun_tm()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编曲学习:如何编写钢琴织体 Cubase12逻辑预置 需要弄明白的问题

钢琴织体是指演奏形式、方式,同一个和弦进行可以用很多种不同的演奏方法。常用织体有分解和弦,柱式和弦,琶音织体,混合织体。 在编写钢琴织体前,先定好歌曲的调。 Cubase小技巧:把钢琴轨道向上拖动打和弦轨道,就可以显示和弦!如果你有一些参考工程,不知道用了哪些和…

jenkins Pipeline接入mysql

背景&#xff1a; jenkin pipeline进化过程如下&#xff1a; Jenkins Pipeline 脚本优化实践&#xff1a;从繁琐到简洁 >>>>> Jenkins Pipeline脚本优化&#xff1a;为Kubernetes应用部署增加状态检测>>>>>> 使用Jenkins和单个模板部署多个K…

Vue+SpringBoot打造康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

电子科技大学链时代工作室招新题C语言部分---题号D

1. 题目 这道题大概的意思就是对一个整形数组的元素进行排序&#xff0c;然后按新的顺序打印原本的下标&#xff1b; 例如&#xff0c;在题目给出的Note部分&#xff0c;{a1, a2, a3, a4, a5}进行排序之后变为了{a2, a1, a4, a3, a5}&#xff0c;于是输出2 1 4 3 5。 排序的规则…

【JavaScript编程实操07】1.查找一个字符串中是否具有某个字符 2.完成数组去重

前言 1、查找一个字符串中是否具有某个字符 代码&#xff1a; 实现效果&#xff1a; 2、完成数组去重 第一种方法 代码&#xff1a; 实现效果&#xff1a; 第二种方法 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次主要是针对Javascript阶段的字符串和数组…

Python图像处理:3.七种图像分割方法

一、常见图像分割方法 (1)传统算法 阈值分割&#xff08;Thresholding&#xff09;&#xff1a;这是最简单也是应用最广泛的一种分割方法&#xff0c;通过选定一个阈值将图像转换为二值图像&#xff0c;从而分割出目标区域。这种方法适用于图像的前景和背景对比明显的情况。 …

链表中的倒数第k个结点 合并两个链表 分割链表 链表的回文结构

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

【冲击蓝桥篇】动态规划(下):你还在怕动态规划!?进来!答题模板+思路解析+真题实战

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

Java项目:60 ssm基于JSP的乡镇自来水收费系统+jsp

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务&#xff0c; 其管理员管理水表&#xff0c;审核用户更换水表的请求&#xff0c;管理用户水费&#xff0c;包括抄表以…

运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)

运动想象迁移学习系列:数据对齐&#xff08;EA&#xff09; 0. 引言1. 迁移学习算法流程2. 欧式对齐算法流程3. 与RA算法进行对比4. 实验结果对比5. 总结欢迎来稿 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/8701679 论文题目&#xff1a;Transfer Le…

【Spring Cloud】Sentinel限流

控制台下载https://github.com/alibaba/Sentinel/releases # 控制台启动 java -Dserver.port10888 -Dcsp.sentinel.dashboard.serverlocalhost:10888 -Dproject.namesentinel-dashboard -jar sentinel-dashboard.jar引入依赖 <dependency><groupId>com.alibaba.c…

hadoop分布式环境ssh设置免密登陆之后目标主机更换无法连接解决

在进行hadoop分布式环境搭建时&#xff08;三台机&#xff0c;master&#xff0c;slave1&#xff0c;slave2&#xff09;&#xff0c;后期slave2系统出现问题&#xff0c;更换新机后&#xff0c;master与slave2文件传输失败&#xff1a; 以为是秘钥过期的问题&#xff0c;更换…

微信小程序调用百度智能云API(菜品识别)

一、注册后生成应用列表创建应用 二、找到当前所需使用的api菜品识别文档 三、点链接看实例代码 这里需要使用到如下几个参数&#xff08;如下&#xff09;&#xff0c;其他的参数可以不管 client_id &#xff1a; 就是创建应用后的API Keyclient_secret&#xff1a; 就是创建…

连续八年在3·15发布新酿造年份国标酒,国台真实年份印记深入人心

对许多酱酒爱好者来说&#xff0c;每年的315已经成为与国台的年度约定日。 自2017年开始&#xff0c;国台都会在这个特殊的日子发布新酿造年份的国台国标酒&#xff0c;至今已连续8年。回首往届盛会依旧历历在目&#xff0c;这一天已然成为国台与所有国粉的约定日&#xff0c;…

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker和K8S理解 一、docker的问世虚拟机是什么&#xff1f;Docker的问世&#xff1f;docker优点及理解 二、Kubernetes-K8SK8S是什么&#xff1f;简单了解K8S架构Master节点Node节点K8S架构图 一、docker的问世 在LXC(Linux container)Linux容器虚拟技术出现之前&#xff0c;业…

Anaconda几个优势

目录 简介优势一、虚拟环境&#xff0c;方便配置版本二、版本清晰可见三、快速打开虚拟环境下的jupyter 简介 Anaconda是一个流行的开源Python和R编程语言的发行版&#xff0c;用于科学计算、数据科学和机器学习任务。它包含许多常用于这些领域的包和库&#xff0c;如NumPy、Sc…

电脑高温怎么办?教你几招,迅速降温!

电脑在长时间运行或者负载较高时&#xff0c;容易出现高温问题&#xff0c;这不仅会影响电脑的性能和稳定性&#xff0c;还可能导致硬件损坏。因此&#xff0c;了解如何解决电脑高温问题是至关重要的。在本文中&#xff0c;我们将介绍三种常见的方法&#xff0c;以分步骤详细说…

前端项目部署后,如何提示用户版本更新

目录 前言解决方案1、public目录下新建manifest.json2、写入当前时间戳到manifest.json3、检查版本更新4、woker线程5、入口文件引入 可能出现的问题 前言 项目部署上线后&#xff0c;特别是网页项目&#xff0c;提示正在操作系统的用户去更新版本非常 important。一般我们都会…

深度学习 精选笔记(12)卷积神经网络-理论基础1

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

C语言学习笔记day8

一维数组冒泡排序法 1. 作用 将乱序的一维数组按照从小到大的顺序排列 2. 原理示意图 3. 代码 #include <stdio.h> #include <stdlib.h> #include <time.h>int main(void) {int a[5] {0};int len sizeof(a) / sizeof(a[0]);int i 0;int j 0;int tmp …