python算法

Python进阶-Ⅸ 递归 二分法

烈酒焚心 提交于 2019-12-06 10:54:52
1、算法 英文名:algorithm,就是计算的方法。# 是截止到目前,人类发现的针对特定场景的,最优的计算方法。是人类智慧的结晶。# 人脑是复杂的,电脑其实很简单。比如:999 * 123 人类会将其变为: 1000 * 123 - 123 这样就好算多了,可是电脑不会如此,只会硬算! 学习算法的目的# 我们学习的算法 都是过去时# 了解基础的算法 才能创造出更好的算法# 不是所有的事情都能套用现成的方法解决的# 有些时候会用到学过的算法知识来解决新的问题 2、递归 1)、楔子 有如下例子:从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:"从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:'从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天,老和尚跟小和尚讲故事:............................. # 看到这个例子,有何感想?这不是车轱辘话码,自己说自己!# 这就对了,我们就正式引入递归! 2)、递归函数的定义 在函数中,自己调用自己的函数,叫递归函数。 1 depth = 0 2 def temple_story(): 3 global depth 4 print('从前有座山,山上有个庙;庙里有两个和尚,一个老和尚跟一个小和尚。一天

Python全栈

杀马特。学长 韩版系。学妹 提交于 2019-12-06 10:28:48
目录 Python 全栈 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文件操作 6. Python - python中经常踩得的坑 7. Python - 网络编程 8. Python - 并发编程 二. 数据库 Mysql Redis MongoDB SQLAlchemy 三. 前端 前端 - HTML 前端 - CSS 前端 - Javescript 前端 - JQuery 前端 - Bootstrapt 前端 - Element-ui 前端 - vUE 四. Python Web 框架 1. Python Web 框架 - Django 2. Python Web 框架 - Flask 3. Python Web 框架 - Tronado 4. RESTful framework 五. Linux Linux - redis Linux - 运维开发 版本控制 - git 数据采集(爬虫) 数据分析 数据结构与算法 go语言 人工智能 其他 Python 全栈 一. Python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 Python2,Python3 Python 开启入坑之路

python垃圾回收

感情迁移 提交于 2019-12-06 10:20:14
1、简述python引用计数机制 python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题。 引用计数算法 当有1个变量保存了对象的引用时,此对象的引用计数就会加1 当使用del删除变量指向的对象时,如果对象的引用计数不为1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,如果再调用1次del,此时会真的把对象进行删除 来源: https://www.cnblogs.com/leijiangtao/p/11977222.html

python类型-序列-元组

。_饼干妹妹 提交于 2019-12-06 08:52:13
元组是一种不可变类型,元组可用作一个字典的key。 1.创建一个元组并进行赋值 atuple = (123, 'abc', ('inner', 'tuple'), 7-9j) 2.访问元组中的值 元组的切片操作和列表一样,用方括号作为切片操作([]),里面写上索引值或者索引范围 >>> atuple[:2] (123, 'abc') 3.更新元组 元组是不可变类型,不能更新或改变元组的元素,可通过现有元组的元组片段再构造一个新的元组。 >>> atuple (123, 'abc', ('inner', 'tuple'), (7-9j)) >>> atuple = atuple[1], atuple[0], atuple[3], atuple[2] >>> atuple ('abc', 123, (7-9j), ('inner', 'tuple')) 4.移除一个元组的元素以及元组本身 删除一个单独的元组元素是不可能的,del atuple 5.元组操作符和内建函数 元组的对象和序列类型操作符和内建函数和列表完全一样。 创建、重复、连接操作:=、*、+ 成员关系操作、切片操作:in、not in、[:] 内建函数:str()、len()、max()、min()、cmp()、list() 操作符:<、>、== 6.元组的特殊特性 虽然元组对象本身是不可变的

Python核心技术与实战——二十|Python的垃圾回收机制

你离开我真会死。 提交于 2019-12-06 08:34:49
今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构。图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器。随着寄存器、异失性存储器(内存)和永久性存储器(硬盘)的出现,也出现了一个矛盾——存储器越来越快,价格也越来越贵。因此,如何利用好每一份告诉存储器的控件,永远是系统设计的一个核心。 回到Python的应用:Python程序在运行的时候,需要在内存中开辟一块空间,用于存放运行时产生的临时变量;计算完成后,再将结果输出到永久性存储器中。如果数据量过大,内存空间管理不善jui很容易出现OOM(out of memory)的现象,程序就会被系统中断 而对于服务器来说,这种设计对于不中断的系统哦过来说,内存管理就显得尤为重要,不然很容易引发内存泄漏的现象。 什么是内存泄漏? 这里的泄漏,并不是说内存出现了信息安全的问题,被恶意程序利用了,而是指程序没有设计好,导致程序未能释放已经不再使用的内存 内存泄漏也不是指内存在物理上消失了,而是意味着代码在分配了某段内存后,因为设计失误,市区了对这块内存的控制,从而导致了内存资源的浪费。 那么,Python优势如何解决这些问题的呢?更明确的问题:对于不会再次用到的内存空间,Python又是通过什么机制来回收的呢? 计数引用 我们在前面不停的强调过,Python中一切皆为对象,因此,我们所有的一切变量

【python测试开发栈】—python内存管理机制(二)—垃圾回收

▼魔方 西西 提交于 2019-12-06 07:36:18
在上一篇文章中( python 内存管理机制—引用计数 )中,我们介绍了python内存管理机制中的引用计数,python正是通过它来有效的管理内存。今天来介绍python的垃圾回收,其主要策略是 引用计数 为主, 标记-清除 和 分代回收 为辅助的策略(熟悉java的同学回回忆下,其实这和JVM的策略是有类似之处的)。 引用计数垃圾回收 我们还接着上一篇文章来接着介绍引用计数的相关场景,方便我们来理解python如何通过引用计数来进行垃圾回收。其实通过字面意思,我们应该也不难理解,当一个对象的引用计数变为0时,表示没有对象再使用这个对象,相当于这个对象变成了无用的"垃圾",当python解释器扫描到这个对象时就可以将其回收掉。 我们通过一些例子来看下,可以使python对象的引用计数增加或减少的场景: # coding=utf-8 """ ~~~~~~~~~~~~~~~~~ @Author:xuanke @contact: 784876810@qq.com @date: 2019-11-29 19:52 @function: 验证引用计数增加和减少的场景 """ import sys def ref_method(str): print(sys.getrefcount(str)) print("我调用了{}".format(str)) print('方法执行完了') def

opencv想到的

喜你入骨 提交于 2019-12-06 05:58:43
opencv是用C++写的库,包了多种语言接口,包括C,C++,python,java等。 OpenCV 是一个开放源代码的计算机视觉库,目前在科研和开发中被广泛使用。OpenCV 由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 功能涉及图像 opencv的原始开发语言是c++ c ,那么 opencv的扩展开发 c c++应该就是最好的 java 和python 快速开发语言 java的 kafka 消息中间件 搞的 c++都没有了服务器开发的优势 rabbitmq是erlang 开发的 k8s是go开发的 这些原始的语言 扩展, 原始开发语言还是有优势的 来源: https://www.cnblogs.com/hshy/p/11964929.html

100+ Python挑战性编程练习(1)

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 05:25:29
目前,这个项目已经获得了7.1k Stars,4.1k Forks。 初级水平是指刚刚通过Python入门课程的人。 他可以用1或2个Python类或函数来解决一些问题。 通常,答案可以直接在教科书中找到。 中级水平是指刚刚学习了Python,但是已经有了较强的编程背景的人。 他应该能够解决可能涉及3个或3个Python类或函数的问题。 答案不能直接在教科书中找到。 先进水平是 他应该使用Python来解决更复杂的问题,使用更丰富的库、函数、数据结构和算法。 他应该使用几个Python标准包和高级技术来解决这个问题。 =========1、Question:问题 2、Hints: 提示 3、Solution: 解决方案=========== 1、 编写一个程序,找出所有能被7整除但不是5的倍数的数, 2000年到3200年(都包括在内)。 得到的数字应该以逗号分隔的顺序打印在一行上。   考虑使用range(#begin, #end)方法 1 values = [] 2 3 for i in range(1000, 3001): 4 s = str(i) 5 if (int(s[0]) % 2 == 0) and (int(s[1]) % 2 == 0) and (int(s[2])%2==0) and (int(s[3])%2==0): 6 values.append(s) 7

python面试题--初级(二)

烈酒焚心 提交于 2019-12-06 03:49:19
基础不牢,地动山摇,面试的时候经常会被问到一些平时基础的很容易被忽视的知识点,所以重在积累,多看多背深入理解,才能在某一天工作中豁然开朗恍然大悟。 面试题不仅仅为了应付面试,更是知识点的一个梳理总结归类和拔高,正所谓巧妇难为无米之炊,寒冬之下多屯粮,勤练兵,一份努力一分收获。 最重要的放前头: ☆♠☆♠☆♠ Python是如何进行内存管理的 ☆♠☆♠☆♠ 较长,先记住在理解------------------------------------------------ 一、垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值。对python语言来讲,对象的类型和内存都是在运行时确定的。这也是为什么我们称python语言为动态类型的原因(这里我们把动态类型语言可以简单的归结为对变量内存地址的分配是在运行时自动判断变量类型并对变量进行赋值)。 二、引用计数: python采用了类似windows内核对象一样的方式来对内存进行管理。每一个对象,都维护这一个对指向该对象的引用的计数。当变量被绑定在一个对象上的时候,该变量的引用计数就是1,(还有另外一些情况也会导致变量引用计数的增加),系统会自动维护这些标签,并定时扫描,当某标签的引用计数变为0的时候,该对象就会被回收。 三、内存池机制 python的内存机制成金字塔形: 第-1,

运用python实现冒泡排序算法

依然范特西╮ 提交于 2019-12-06 03:22:57
冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名。 冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右端冒出。 python实现冒泡排序: def bubble_sort(nums): for i in range(len(nums) - 1): for j in range(len(nums) - i - 1): if nums[j] > nums[j + 1]: nums[j], nums[j + 1] = nums[j + 1], nums[j] return nums python实现冒泡排序的核心思想是通过从列表一端迭代循环元素,再通过一个循环让这个元素之后的元素相邻两个比较,从而依次将最大值移动到最末端,如下图示意。 本想放gif图的,放不上有点问题。 关于冒泡排序的时间复杂度,在上面python实现的代码中时间复杂度是 n的平方 ,当然可以再考虑一下极端的情况:当队列已经从小到大排好序或者从大到小排好序,从小到大排好顺序时可以只扫描一遍就结束排序,此时时间复杂度为O(n),如果是从大到小,那么就需要扫描n-1次,同时需要比较交换n-1次,时间复杂度为n的平方 。 来源: https://www.cnblogs.com/pypypy/p/11960134.html