![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python学习
文章平均质量分 54
啦啦啦昊昊
欢迎关注我
展开
-
Python数据结构编程题
1.数组中出现次数超过一半的数字思路:在遍历数组时保存两个值:一是数组中一个数字,一是次数。遍历下一个数字时,若它与之前保存的数字相同,则次数加1,否则次数减1;若次数为0,则保存下一个数字,并将次数置为1。遍历结束后,所保存的数字即为所求。然后再判断它是否符合条件即可。 时间复杂度:O(N) def MoreThanHalfNum_Solution(numbers): len1 = len(numbers) if len1==0: ...原创 2021-10-17 14:44:31 · 258 阅读 · 0 评论 -
Python高级 — 并发编程
1.对多进程,多线程,协程的理解进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所有进程间数据不共享,开销大。 线程: cpu调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在,一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变量),从而极大地提高了程序的运行效率。 协程: 是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度时,将寄存器上下文和栈保原创 2021-10-17 11:25:55 · 143 阅读 · 0 评论 -
Python高级 — 面向对象
1.谈谈你对面向对象的理解?面向对象是相当于面向过程而言的,面向过程语言是一种基于功能分析的,以算法为中心的程序设计方法,而面向对象是一种基于结构分析的,以数据为中心的程序设计思想。在面向对象语言中有一个很重要的东西,叫做类。面向对象有三大特性:封装、继承、多态。2.Python中的可变对象和不可变对象不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个...原创 2021-10-16 21:16:51 · 108 阅读 · 0 评论 -
Python高级 — 设计模式
1.设计模式设计模式是经过总结,优化的,对我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码,反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板。 常见的是工厂模式和单例模式。2.单例模式的应用场景有那些?单例模式应用的场景一般发生在以下条件下: 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。 控制资源...原创 2021-10-16 20:33:38 · 268 阅读 · 0 评论 -
Python高级 — 函数
1.python常见的列表推导式?[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]2.简述read、readline、readlines的区别? read:读取整个文件 readline:读取下一行 readlines:读取整个文件到一个迭代器以供我们遍历3.python函数重载机制函数重载主要是为了解决两个问题。 可变参数类型。 可变参数...原创 2021-10-16 20:07:13 · 158 阅读 · 0 评论 -
Python高级 — 内存管理与垃圾回收机制
48.哪些操作会导致Python内存溢出,怎么处理? 49.关于Python内存管理,下列说法错误的是 A,变量不必事先声明 B,变量无须先创建和赋值而直接使用 C,变量无须指定类型 D,可以使用del释放资源50.Python的内存管理机制及调优手段?内存管理机制: 引用计数、垃圾回收、内存池引用计数:引用计数是一种非常高效的内存管理手段,当一个Python对象被引用时其引用计...原创 2021-10-15 21:17:00 · 166 阅读 · 1 评论 -
Python高级 — 元类
42.Python中类方法、类实例方法、静态方法有何区别?类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用; 类实例方法: 是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身; 静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系。43.遍历一个object的所有属性,并print每一个属性名? cla原创 2021-10-15 21:08:41 · 76 阅读 · 0 评论 -
Python基础 — 企业面试题
15.python新式类和经典类的区别?在python里凡是继承了object的类,都是新式类 Python3里只有新式类 Python2里面继承object的是新式类,没有写父类的是经典类 经典类目前在Python里基本没有应用 保持class与type的统一对新式类的实例执行a.class与type(a)的结果是一致的,对于旧式类来说就不一样了。 对于多重继承的属性搜索顺序不一样新式类是采用广度优先搜索,旧式类采用深度优先搜索。 16.python中内置的数据结构有几种?整原创 2021-10-06 16:02:23 · 94 阅读 · 0 评论 -
Python基础 — 数据类型
5.现有字典 d= {'a':24,'g':52,'i':12,'k':33}请按value值进行排序sorted(d.items(),key=lambda x:x[1]) # x[0]代表用key进行排序;x[1]代表用value进行排序。输出:[('i', 12), ('a', 24), ('k', 33), ('g', 52)]加上dict(),输出为字典类型6.字典推导式 对于字典,它和列表、元组一样,也可以使用字典推导...原创 2021-10-06 14:30:54 · 185 阅读 · 0 评论 -
Python基础 — 模块与包
3.输入日期, 判断这一天是这一年的第几天?import datetime 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(yea原创 2021-10-06 10:04:25 · 83 阅读 · 0 评论 -
Python基础 — 文件操作
1.有一个jsonline格式的文件fifile.txt大小约为10Kdef get_lines(): with open('file.txt', 'rb') as f: return f.readlines()if __name__ == '__main__': for e in get_lines(): process(e) # 处理每一行数据现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines...原创 2021-10-06 09:54:54 · 127 阅读 · 0 评论 -
python 之内置模块
1.用 functools.wraps 定义函数修饰器 装饰器可以对函数进行封装,但是会改变函数信息 使用 functools 的 warps 可以解决这个问题 装饰器def trace(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) print('%s(%r, %r) -> %r' % (func.__name__, args, kwar...原创 2021-09-18 13:59:18 · 51 阅读 · 0 评论 -
python之类与继承总结
1.尽量用辅助类来维护程序的状态,而不要用字典和元组不要使用包含其他字典的字典,也不要使用过长的元组。 如果容器中包含简单而又不可变的数据,那么可以先使用 namedtuple(具名元组) 来表示,带稍后有需要时,再修改为完整的类。 保存内部状态的字典如果变得比较复杂,那就应该把这些代码拆解为多个辅助类。2.简单的接口应该接受函数,而不是类的实例defaultdict函数钩子(hook)函数...原创 2021-03-17 22:20:34 · 326 阅读 · 4 评论 -
python之函数总结
1.尽量用异常来表示特殊情况,而不要返回 None用 None 这个返回值来表示特殊意义的函数,很容易使调用者犯错,因为 None 和 0 以及空字符串之类的值,在表达式里都会评估为 False。函数在遇到特殊情况时,应该抛出异常,而不要返回 None 。调用者在看到该函数的文档中所描述的异常之后,应该就会编写相应的代码来处理它们了。def divide(a, b): try: return a / b except ZeroDivisionError as e原创 2021-03-09 22:18:40 · 453 阅读 · 4 评论 -
异常处理 try/except/else/finally
1.try/finally结构既要将异常向上传播,又要在异常发生时执行清理工作。常见用途之一:确保程序能够可靠的关闭文件句柄handle = open('filepath') # 可能发生IOErrortry: data = handle.read() # 可能发生UnicodeDecodeErrorfinally: handel.close() # 一定可以执行2.try/except结构3.try/except/else结构清晰的描绘出哪些异常原创 2021-03-07 16:53:58 · 2275 阅读 · 2 评论 -
尽量不要在 for 和 while 循环后面写 else 块
将程序的逻辑搞得直白一点,不要太复杂。原创 2021-03-07 15:54:02 · 142 阅读 · 0 评论 -
zip()函数
用 zip() 函数同时遍历两个迭代器names = ['Cecilia', 'Lise', 'Marie']letters = [len(n) for n in names]longest_name = Nonemax_letters = 0for name, count in zip(names, letters): if count > maxletters: longest_name = name max_letters = count原创 2021-03-07 15:27:25 · 284 阅读 · 2 评论 -
python 位运算符及运算符的优先级
python运算符优先级a|=2等价于a=a|2a>>=2等价于a=a>>2a<<=2等价于a=a<<2原创 2021-03-02 19:45:35 · 170 阅读 · 0 评论 -
random.randint(0, 1)
random.randint() 产生指定范围内的随机整数,包括边界。因为它会产生 0 或 1 随机,而数字 0 是 False 并且其他所有数字都是 True , 所以它会随机产生一个假值或真值。在Python中,空容器,空字符串None和数字0(整数0,float 0.0等)都是假值。...原创 2021-03-02 19:21:09 · 5817 阅读 · 0 评论 -
enumerate 函数
enumerate 函数提供了一种精简的写法,可以在遍历迭代器时获知每个元素的索引; 尽量用 enumerate 来改写那种将 range 与下标访问相结合的序列遍历代码; 可以给 enumerate 提供第二个参数,以指定开始计数时所用的值(默认为0)。 for i, name in enumerate(name_list, 1): print('%d:%s' % (i, name)) ...原创 2021-03-02 18:38:25 · 345 阅读 · 0 评论 -
列表推导(list comprehension)总结
1. 用列表推导来取代 map + filter 函数列表推导a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_squares = [x**2 for x in a if x % 2 == 0]print(even_squares)>>>[4, 16, 36, 64, 100]map + filter 函数alt = map(lambda x: x**2, filter(lambda x: x % 2 == 0, a))eve.原创 2021-03-02 16:47:40 · 215 阅读 · 0 评论 -
在单次切片操作内,不要同时指定 start, end 和 stride
将以字节形式存储的字符串反转:x = b'mongoose'y = x[::-1]print(y)>>>b'esoognom'这对字节串和 ASCII 字符有用,对已经编码成 UTF-8 字节串的 Unicode 字符无效。例子:a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']a[::2] # ['a', 'c', 'e', 'g']a[::-2] # ['b', 'd' 'f', 'h']a[2原创 2021-03-02 13:36:28 · 122 阅读 · 0 评论 -
切片(slice)
切割列表时,索引越界不会出现问题; 访问列表中的单个元素时,索引不能越界。原创 2021-03-01 21:19:44 · 76 阅读 · 0 评论