python算法

Two Sum

别说谁变了你拦得住时间么 提交于 2019-11-27 18:35:49
题目链接 【英文版】 https://leetcode.com/problems/two-sum/ 【中文版】 https://leetcode-cn.com/problems/two-sum/ 题目 给定一个整数数组 \(nums\) 和一个目标值 \(target\) ,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 :type nums: List[int] :type target: int :rtype: List[int] 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解法 暴力搜索 遍历 \(nums\) 中的每一个元素 \(x\) ,查找 \(nums\) 中另一个元素 \(j\) 使得 \(x+j=target\) ★ 时间复杂度: \(O(n^2)\)   对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 ★ 空间复杂度: \(O(1)\) Brute Force -python-1 ```python class Solution(object): def twoSum(self, nums, target)

创建虚拟环境,以方便管理

我们两清 提交于 2019-11-27 17:54:46
目录 一、计算机基础 二、Python基础 三、函数 四、常用模块 五、模块和包 六、面向对象 七、网络编程socket 八、数据库 九、前端 十、Python Web框架 十一、版本控制--GIT 十二、爬虫 十三、前端框架之VUE 十四、量化投资与Python 十五、算法 十六、设计模式 十七、restful framework 十八、linux基础 十九、权限管理 一、计算机基础 计算机基础知识 计算机的发展史及多道技术 计算机网路知识的简单介绍 二、Python基础 Python学习【第0篇】:window环境下安装Python2和Python3   Python学习【第1篇】:Python简介以及入门 Python学习【第2篇】:Python之数据类型 Python学习【补充篇】:Python之字符串切片 Python学习【第3篇】:Python之运算符 Python学习【第4篇】:Python之可变数据类型与不可变数据类型 Python学习【第5篇】:Python之字符编码问题 Python学习【第6篇】:Python之文件操作 Python学习【补充篇】:map函数和reduce函数的区别 三、Python之函数 Python学习【第7篇】:Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) Python学习【第7篇】:Python之函数(参数的介绍)

《深度学习入门基于Python的理论与实现》PDF代码学习指导

て烟熏妆下的殇ゞ 提交于 2019-11-27 17:10:32
入门神经网络深度学习,推荐学习《深度学习入门:基于Python的理论与实现》,这本书不来虚的,一上来就是手把手教你一步步搭建出一个神经网络,还能把每一步的出处讲明白。理解神经网络,很容易就能入门。 深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。 《深度学习入门:基于Python的理论与实现》中文版PDF,314页,带目录标签,文字可复制。配套源代码。 下载: https://pan.baidu.com/s/1Ew_WvDQljWZ_YnGW-VDlsA 提取码: mh49 推荐非常适合入门神经网络编程的一本书《Python神经网络编程》,主要是三部分: 介绍神经网络的基本原理和知识;用Python写一个神经网络训练识别手写数字;对识别手写数字的程序的一些优化。 清晰易懂,只用了一点数学(目标读者是高中生,书中稍许用到的微积分知识,在附录也有解释),就把神经网络的构造和原理讲得很清楚。讲完理论,作者在书的第二部分进入实践,一步步编写了一段应用神经网络模型识别手写数字的代码,几乎每一步都伴有详细讲解。个人感觉是,如果预先有一点点python的知识,会更容易理解这些代码。第三部分篇幅不长,主要是在某些方面略作延伸

用python写一个简单的中文搜索引擎

不想你离开。 提交于 2019-11-27 16:31:40
搜索引擎可以用Nutch等工具来配置,也可以自己写代码实现,作为一个小练习。 要做的搜索引擎搜索范围限定在某个新闻网站内部,和百度site:(指定网址)的功能类似。把爬虫和解析的代码改改,也可以用于其他的搜索场合。 使用的编程语言为python。 这篇文章把搜索引擎需要的步骤都讲的很清楚了: http://073palmer.blogspot.com/2012/06/python.html 打不开的朋友可以看这个: http://blog.sina.com.cn/s/blog_6f97247e0102vuyo.html (转载来转载去,也不知道到底哪个才是原作者链接) 不过这篇文章里的搜索引擎是基于英文单词的,而我写的主要是中文文本。 首先放个github链接。 https://github.com/RyinSummers/AVerySimpleSearchEngine 总的来说,要达成目标,一共有如下几个步骤: 爬取这个网站,得到所有网页链接。 得到网页的源代码,解析剥离出想要的内容。 把内容做成词条索引,保存起来。我使用的是最简陋的倒排表。 搜索时,根据搜索词在词条索引里查询,按顺序返回相关的搜索结果。我使用的评价方式是最简陋的tfidf,而且tfidf值并非在建表时保存,而是在每次查询时再计算。 步骤3和4使用的方式性能有待提升,不过,因为要爬的这个网站网页数量不过万

十大经典排序算法(Python,Java实现)

旧城冷巷雨未停 提交于 2019-11-27 16:29:21
参照: https://www.cnblogs.com/wuxinyan/p/8615127.html     https://www.cnblogs.com/onepixel/articles/7674659.html 一.排序算法分类:   比较类排序 :通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序 :不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排    二.算法复杂度    注(相关概念): 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定 :如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。 时间复杂度 :对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。 空间复杂度: 是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 内部排序 :据记录在内存中进行排序。(插入排序,希尔排序,冒泡排序等)【归并排序既可以实现内部排序,也可以实现外部排序,如多路归并排序等】 外部排序: 一般数据量较大 , 排序过程中需要访问外存。(计数排序,桶排序,基数排序) 三.十大经典排序及实现(Python/Java)   1.冒泡排序(Bubble Sort):    

PCA LDA降维测试

谁说胖子不能爱 提交于 2019-11-27 16:12:43
测试概述 该实验的目的是测试LDA(Linear Discriminant Analysis,线性判别分析)的降维效果(主要是训练时间),同时引入了PCA(Principal components analysis,主成分分析)作为比较。 程序比较简单,降维算法和训练算法均是调用python的sklearn库的函数,所有代码都在程序中给出。 每次使用相同数据集,通过三种不同方式测试,分别是直接训练、PCA降维后训练、LDA降维后训练。 文件说明 code 测试程序文件夹,内含LDA_test.py程序 dataset 测试数据集文件夹 output 测试结果截图文件夹 测试环境 操作系统 win10 64位 CPU AMD Ryzen 5 2600x 6-core 3.60GHz 内存 16GB IDE/编辑器 PyCharm Python版本 3.6 LDA_test.py代码 import numpy as np from pandas import read_csv import time from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.decomposition import PCA from sklearn.svm import SVC from

K臂老虎机问题Python代码实现

我们两清 提交于 2019-11-27 15:58:16
参考周志华的《西瓜书》 第16章强化学习 16.2 K-摇臂赌博机 其实这个问题的目的就是为了能够获得更大的利润,但是具体怎样去获得更大的利润,用到了两种算法,一种是epsilon-贪心算法,另一种是Softmax算法,当然还有其他方法,具体可以参考 http://incompleteideas.net/book/the-book-2nd.html ,我在网上也找到了一位博主的博客,好像是翻译这本书的,写得挺好的,具体网址如下: https://blog.csdn.net/LagrangeSK epsilon-贪心算法具体是选择一个平衡点,下次的行为可以随机选取,也可以选择当前收益最大化的行为,并实时更新动作的收益。而Softmax算法选择下一次行为是按照概率来选择,若一个动作的收益较大,则下次选择该动作的概率也大,并实时更新概率。具体代码如下: # -*- coding: utf-8 -*- #K臂老虎机问题 import numpy as np import random import matplotlib.pyplot as plt #K=[1,2,3,4,5] def init(): tau=0.1 epsilon=0.01 T=3000 reword=[1,1] probability=[0.4,0.2] #arm=dict(list(zip(reword

Python基础更新

别等时光非礼了梦想. 提交于 2019-11-27 15:36:44
Python的基础认知 1. 计算机基础知识 2. Python的应用和历史 3. Python是一门什么语言 4. Python的优缺点 5. Python的种类 Python基础知识 1. Python的安装和环境配置 2. 第一个Python程序 3. 变量 4.常量 5. 注释 6. 基础数据类型初识 7. 字符串的格式化输出 8. while循环 9. 运算符 10. 初识编码 11. 整数 int 12. 布尔值 13. 字符串 1.索引 (下标) [ ] # 从0计数 2.切片 3.字符串常用的方法 14. for循环 15. rang范围 16. list列表 认识list列表 列表的作用 列表的增删改查 增 删 改 查 17. 元组 认识元组 18. dict字典 认识dict字典 字典的用处 字典的增删改查 增 删 改 查 一些操作举例 字典的嵌套 19. set集合 -天然去重 认识集合 集合的增删改 增 删 改 去重 其他操作 20. 深浅拷贝 浅拷贝 深拷贝deepcopy 21. 小数据池 22. 数据类型转换 23. 坑 24. 编码解码 25. 文件操作 一般书写格式格式 写 非文本操作b r+ ,w+ , a+ 断点续传 光标 truncate() 截断文件 文件修改 26. 三种格式化输出 函数和模块 1. 函数 - 面向过程编程 初识函数

Python学到什么程度才可以去找工作?掌握这4点足够了!

有些话、适合烂在心里 提交于 2019-11-27 14:00:58
大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来,一般都不会有什么问题,而对于自学Python来说,那就比较难掌握,冒然出去找工作非常容易受打击,从而失去学习Python的信心。接下来我们就来看看Python学到什么程度才算是真正学会Python可以去一展身手。 一、确立目标、了解需求 做什么事情都要先确定好目标,才不至于迷失方向。我们就是Python爬虫工程师为职位目标。 在一些国内大型的招聘网上找到相关的职位要求: 仔细看看,我们可以得出以下几点: 1、 python 不是唯一可以做爬虫的,很多语言都可以,尤其是 java,同时掌握它们和拥有相关开发经验是很重要的加分项 2、 大部分的公司都要求爬虫技术有一定的深度和广度,深度就是类似反反爬、加密破解、验证登录等等技术;广度就是分布式、云计算等等,这都是加分项 3、 爬虫,不是抓取到数据就完事了,如果有数据抽取、清洗、消重等方面经验,也是加分项 4、 一般公司都会有自己的爬虫系统,而新进员工除了跟着学习以外最常做的工作就是维护爬虫系统,这点要有了解 5、 最后一个加分项就是前端知识,尤其是常用的 js、ajax、html/xhtml、css 等相关技术为最佳,其中 js 代码的熟悉是很重要的 6、

Python数据结构与算法

心不动则不痛 提交于 2019-11-27 12:50:47
1、栈结构的实现 class Stack(object): """栈操作""" def __init__(self): self.__list = [] def push(self,item): """ 添加一个新元素item到栈顶 :param item: :return: """ self.__list.append(item) def pop(self): """弹出栈顶元素""" return self.__list.pop() def peek(self): """返回栈顶元素""" if self.__list: return self.__list[-1] else: return None def is_empty(self): """判断栈是否为空""" return self.__list == [] def size(self): return len(self.__list) if __name__ == "__main__": s = Stack() s.push(1) s.push(2) s.push(3) s.push(4) print(s.pop()) print(s.pop()) print(s.pop()) 2、队列的操作 class queue(object): """队列""" def __init__(self): self.__list