python算法

网络编程

为君一笑 提交于 2019-12-02 18:09:34
文章出处 https://www.cnblogs.com/wupeiqi/articles/5040827.html Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python # -*- coding:utf-8 -*- import threading import time def show(arg): time.sleep( 1 ) print 'thread' + str (arg) for i in range ( 10 ): t = threading.Thread(target = show, args = (i,)) t.start() print 'main thread stop' 上述代码创建了10个“前台”线程,然后控制器就交给了CPU,CPU根据指定算法进行调度,分片执行指令。 更多方法: start 线程准备就绪,等待CPU调度 setName 为线程设置名称 getName 获取线程名称 setDaemon 设置为后台线程或前台线程(默认) 如果是后台线程,主线程执行过程中,后台线程也在进行,主线程执行完毕后,后台线程不论成功与否,均停止 如果是前台线程,主线程执行过程中,前台线程也在进行

常用python机器学习库总结

佐手、 提交于 2019-12-02 17:08:42
原文地址:https://www.cnblogs.com/Fighting365/p/6132707.html 开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python。这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Python工具包可供使用,所以作为Pythoner,也是相当幸福的。如果仔细留意微博和论坛,你会发现很多这方面的分享,自己也Google了一下,发现也有同学总结了“Python机器学习库”,不过总感觉缺少点什么。最近流行一个词,全栈工程师(full stack engineer),作为一个苦逼的程序媛,天然的要把自己打造成一个full stack engineer,而这个过程中,这些Python工具包给自己提供了足够的火力,所以想起了这个系列。当然,这也仅仅是抛砖引玉,希望大家能提供更多的线索,来汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。 1. Python网页爬虫工具集 一个真实的项目,一定是从获取数据开始的。无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好

python几种排序算法和二分查找方法的实现

久未见 提交于 2019-12-02 17:02:59
一.算法概念 - 含义:算法就是对问题进行处理且求解的一种实现思路或者思想。 评判程序优劣的方法 - 消耗计算机资源和执行效率(无法直观) 计算算法执行的耗时(不推荐,因为会受机器和执行环境的影响) 时间复杂度(推荐) 时间复杂度 - 评判规则:量化算法执行的操作/执行步骤的数量, - 如下列 def sumOfN(n): # 执行一步: theSum = 0 for i in range(1,n+1): # 下式一共执行n步,for循环不算一步,因为它是控制循环次数的 theSum = theSum + i # return又执行一步 return theSum # 调用函数,计算执行步骤为:n+2 sumOfN(10) - 最重要的项:时间复杂度表达式中最有意义的项 - 使用大O记法来表示时间复杂度 O(最重要的项) # 如上式:最有意义的项就是n,所以n+2 ==>O(n) 常见的时间复杂度: O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) 数据结构 - 概念: 对于数据(基本类型的数据(int,float,char))的组织方式就被称作为数据结构。数据结构解决的就是一组数据如何进行保存,保存形式是怎样的。 - 使用不同的形式组织数据,在基于查询时的时间复杂度是不一样的

插入排序——Python实现

你。 提交于 2019-12-02 16:47:33
插入排序Python实现 # -*- coding: utf-8 -*- # @Time : 2019/10/28 20:47 # @Author : yuzhou_1shu # @Email : yuzhou_1shu@163.com # @File : insertion_sort.py # @Software: PyCharm def insertion_sort(collection): """Python实现插入排序算法 将插入排序模拟成抓扑克牌: 1、当抓到第一个牌肯定是有序的 2、然后抓到第二张牌,如果比第一张大,放在右边;如果小,放在第一张左边;相等,左右都可以 :param collection: 待排序序列 :return: 升序排好的对应序列 """ length = len(collection) # 第一张牌肯定有序,所以循环变量从1开始(也就是第二张牌开始插入),i代表摸到的牌 for i in range(1, length): insertion_index = i while(insertion_index > 0 and collection[insertion_index - 1] > collection[insertion_index]): collection[insertion_index], collection[insertion

选择排序——Python实现

半世苍凉 提交于 2019-12-02 16:43:17
选择排序Python实现 # -*- coding: utf-8 -*- # @Time : 2019/10/28 20:06 # @Author : yuzhou_1shu # @Email : yuzhou_1shu@163.com # @File : selection_sort.py # @Software: PyCharm def selection_sort(collection): """ 用Python实现的插入排序算法 :param collection: 待排序序列 :return: 升序排好的对应序列 """ length = len(collection) # 算法核心是每次选取一个最小的元素放在第一位 for i in range(length - 1): # 首先假设第一位是最小的,并用min_loc记录下这个位置 min_loc = i # j从i+1也就是第二位开始循环,找有没有比min_loc位置上更小的元素 for j in range(i + 1, length): # 如果找到了,修改min_loc if collection[j] < collection[min_loc]: min_loc = j # 通过上层循环找到最小值,每次将最小值与当前位置的值进行交换 if min_loc != i: collection[min_loc],

python常用算法(6)——贪心算法,欧几里得算法

夙愿已清 提交于 2019-12-02 15:13:01
1,贪心算法   贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的的时在某种意义上的局部最优解。   贪心算法并不保证会得到最优解,但是在某些问题上贪心算法的解就是最优解。要会判断一个问题能否用贪心算法来计算。贪心算法和其他算法比较有明显的区别,动态规划每次都是综合所有问题的子问题的解得到当前的最优解(全局最优解),而不是贪心地选择;回溯法是尝试选择一条路,如果选择错了的话可以“反悔”,也就是回过头来重新选择其他的试试。 1.1 找零问题   假设商店老板需要找零 n 元钱,钱币的面额有100元,50元,20元,5元,1元,如何找零使得所需钱币的数量最少?(注意:没有10元的面额)   那要是找376元零钱呢? 100*3+50*1+20*1+5*1+1*1=375   代码如下: # t表示商店有的零钱的面额 t = [100, 50, 20, 5, 1] # n 表示n元钱 def change(t, n): m = [0 for _ in range(len(t))] for i, money in enumerate(t): m[i] = n // money # 除法向下取整 n = n % money # 除法取余 return m, n print(change(t, 376)) # ([3,

《Python编程从0到1》笔记5——图解递归你肯定看完就能懂!

时光总嘲笑我的痴心妄想 提交于 2019-12-02 15:12:21
本小节的示例比较简单,因为在每次递归过程中原问题仅缩减为单个更小的问题。这样的问题往往能够用简单循环解决。这类递归算法的函数调用图是链状结构。这种递归类型被称为“单重递归”(single recursion)。 示例一:编写函数seq(n),打印从1到n的数字。 可以很容易地用循环解决这个问题: def seq(n): i = 1 while i<=n: print(i) i += 1 也可以使用递归版本,这是本节的主要程序风格: def seq(n): if n>0: seq(n-1) print(n) 在递归版本的seq()函数中,参数等于0时函数什么也不做直接返回。当参数为正整数时[1],将参数减1后调用自身,待调用返回后打印参数。当调用seq(3)时,该函数会生成如下的调用链seq(3) > seq(2) > seq(1) > seq(0),当调用链依次返回时,seq(3) - seq(1)的print语句会逆序执行,完成打印序列的目的。如图 2.10所示。 图 2.10 seq函数的递归调用次序 图 2.11 seq的调用栈变化示意图 在实际编写代码时,不会使用这样的方式打印序列[2]。因为对于本问题来说,递归版本的效率很低。本小节示例的目的是让读者了解递归函数的执行流程和基本语法形式。 [1] 为了简单起见,假定函数只会接收到非负整数作为参数。 [2]

八皇后,回溯与递归(Python实现)

柔情痞子 提交于 2019-12-02 15:05:08
八皇后,回溯与递归(Python实现) 八皇后问题是十九世纪著名的数学家高斯1850年提出 。以下为python语言的八皇后代码,摘自《Python基础教程》,代码相对于其他语言,来得短小且一次性可以打印出92种结果。同时可以扩展为九皇后,十皇后问题。 问题:在一个 8*8 棋盘上,每一行放置一个皇后旗子,且它们不冲突。冲突定义:同一列不能有两个皇后,每一个对角线也不能有两个皇后。当然,三个皇后也是不行的,四个也是不行的,凭你的智商应该可以理解吧。 解决方案:回溯与递归。 介绍: 1.回溯法 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。参见 百度百科 2.递归法 阶乘 n! = 1 x 2 x 3 x ... x n 用函数 fact(n) 表示,可以看出: fact(1) = 1 fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 于是, fact(n) 用递归的方式写出来就是: def fact(n): if n==1: return 1 return n * fact(n - 1) 如果计算 fact(5) ,结果如下: ==

PYTHON 面试170道

心已入冬 提交于 2019-12-02 15:04:05
语言特性 1. 谈谈对 Python 和其他语言的区别 2. 简述解释型和编译型编程语言 3. Python 的解释器种类以及相关特点? 4. Python3 和 Python2 的区别? 5. Python3 和 Python2 中 int 和 long 区别? 6. xrange 和 range 的区别? 编码规范 7. 什么是 PEP8? 8. 了解 Python 之禅么? 9. 了解 DocStrings 么? 10. 了解类型注解么? 11. 例举你知道 Python 对象的命名规范,例如方法或者类等 12. Python 中的注释有几种? 13. 如何优雅的给一个函数加注释? 14. 如何给变量加注释? 15. Python 代码缩进中是否支持 Tab 键和空格混用。 16. 是否可以在一句 import 中导入多个库? 17. 在给 Py 文件命名的时候需要注意什么? 18. 例举几个规范 Python 代码风格的工具 数据类型-字符串 19. 列举 Python 中的基本数据类型? 20. 如何区别可变数据类型和不可变数据类型 21. 将"hello world"转换为首字母大写"Hello World" 22. 如何检测字符串中只含有数字? 23. 将字符串"ilovechina"进行反转 24. Python 中的字符串格式化方式你知道哪些? 25.

Pytorch1.3源码解析-第一篇

半腔热情 提交于 2019-12-02 14:58:22
pytorch$ tree -L 1 . ├── android ├── aten ├── benchmarks ├── binaries ├── c10 ├── caffe2 ├── CITATION ├── cmake ├── CMakeLists.txt ├── CODEOWNERS ├── CONTRIBUTING.md ├── docker ├── docs ├── ios ├── LICENSE ├── Makefile ├── modules ├── mypy-files.txt ├── mypy.ini ├── mypy-README.md ├── NOTICE ├── README.md ├── requirements.txt ├── scripts ├── setup.py ├── submodules ├── test ├── third_party ├── tools ├── torch ├── ubsan.supp └── version.txt 17 directories, 15 files 解读如下: . ├── android ├── aten(aten -A TENsor library for C++11,PyTorch的C++ tensor library,aten有大量的代码是来声明和定义Tensor运算相关的逻辑) ├──