python算法

Python: simple code

南笙酒味 提交于 2019-12-01 05:44:12
# !/usr/bin/env python3.6 # -*- coding: utf-8 -*- # visual studio 2017 # 2019 10 12 Geovin Du print from turtle import *; import sys; from math import ceil; import re; import time; import operator; from copy import deepcopy; from random import randint; print('geovindu'); # 重复元素判定 def all_unique(lst): return len(lst) == len(set(lst)) x = [1,1,2,2,3,2,3,4,5,6] y = [1,2,3,4,5] all_unique(x) # False all_unique(y) # True # #字符元素组成判定 from collections import Counter def anagram(first, second): return Counter(first) == Counter(second) anagram("abcd3", "3acdb") # True #内存占用 variable = 30 print(sys

1.引入概念

a 夏天 提交于 2019-12-01 04:52:03
数据结构与算法(Python) Why? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器。 那么数据结构和算法是什么?答曰:兵法! 我们可以不看兵法在战场上肉搏,如此,可能会胜利,可能会失败。即使胜利,可能也会付出巨大的代价。我们写程序亦然:没有看过数据结构和算法,有时面对问题可能会没有任何思路,不知如何下手去解决;大部分时间可能解决了问题,可是对程序运行的效率和开销没有意识,性能低下;有时会借助别人开发的利器暂时解决了问题,可是遇到性能瓶颈的时候,又不知该如何进行针对性的优化。 如果我们常看兵法,便可做到胸有成竹,有时会事半功倍!同样,如果我们常看数据结构与算法,我们写程序时也能游刃有余、明察秋毫,遇到问题时亦能入木三分、迎刃而解。 故,数据结构和算法是一名程序开发人员的必备基本功,不是一朝一夕就能练成绝世高手的。冰冻三尺非一日之寒,需要我们平时不断的主动去学习积累。 通过三天的学习,我们希望让大家能理解其概念,掌握常用的数据结构和算法。 引入 先来看一道题: 如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合? 1.1 第一次尝试 1 import time 2 3 start_time = time.time() 4 5 #

Python基础01

旧街凉风 提交于 2019-12-01 04:34:39
Python:解释型语言 1.1编译和解释的区别: 编译器 是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。 解释器 是只在执行程序时,才一条条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行快。 1.2 Python特性 优点 : 定位是”优雅”、”明确”、”简单”。 开发效率高,有强大的第三方库 高级语言 可移植性--几乎可以在所有平台上运行 可扩展性--如果需要一段关键代码运行的更快或者希望某些算法不公开,可以吧部分程序用C 或者C++编写,然后再Python程序中使用它们 可嵌入性--可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能 缺点 : 运行速度较慢 代码不可加密 线程不能利用多CPU 1.3 Python解释器 CPython 官网解释器(最常用) IPython 是基于CPython之上的一个交互式解释器,只是在交互方式有所加强 JPython 是运行在Java上的Python解释器可以直接把Python代码编译成Java字节码执行 IronPython 和JPython类似。只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码 PyPy 提高运行效率 来源: https://www

Python基础01

早过忘川 提交于 2019-12-01 04:32:23
Python:解释型语言 1.1编译和解释的区别: 编译器 是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。 解释器 是只在执行程序时,才一条条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行快。 1.2 Python特性 优点 : 定位是”优雅”、”明确”、”简单”。 开发效率高,有强大的第三方库 高级语言 可移植性--几乎可以在所有平台上运行 可扩展性--如果需要一段关键代码运行的更快或者希望某些算法不公开,可以吧部分程序用C 或者C++编写,然后再Python程序中使用它们 可嵌入性--可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能 缺点 : 运行速度较慢 代码不可加密 线程不能利用多CPU 1.3 Python解释器 CPython 官网解释器(最常用) IPython 是基于CPython之上的一个交互式解释器,只是在交互方式有所加强 JPython 是运行在Java上的Python解释器可以直接把Python代码编译成Java字节码执行 IronPython 和JPython类似。只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码 PyPy 提高运行效率 来源: https://www

python数据分析——KNN邻近算法

非 Y 不嫁゛ 提交于 2019-12-01 02:20:52
K-近邻算法(KNN) 0、导引 如何进行电影分类 众所周知,电影可以按照题材分类,然而题材本身是如何定义的?由谁来判定某部电影属于哪个题材?也就是说同一题材的电影具有哪些公共特征?这些都是在进行电影分类时必须要考虑的问题。没有哪个电影人会说自己制作的电影和以前的某部电影类似,但我们确实知道每部电影在风格上的确有可能会和同题材的电影相近。那么动作片具有哪些共有特征,使得动作片之间非常类似,而与爱情片存在着明显的差别呢?动作片中也会存在接吻镜头,爱情片中也会存在打斗场景,我们不能单纯依靠是否存在打斗或者亲吻来判断影片的类型。但是爱情片中的亲吻镜头更多,动作片中的打斗场景也更频繁,基于此类场景在某部电影中出现的次数可以用来进行电影分类。 本章介绍第一个机器学习算法:K-近邻算法,它非常有效而且易于掌握。 1、k-近邻算法原理 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。 优点:精度高(计算距离)、对异常值不敏感(单纯根据距离进行分类,会忽略特殊情况)、无数据输入假定(不会对数据预先进行判定)。 缺点:时间复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。 工作原理 存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据 与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的 特征进行比较

结合学习经历,谈一谈如何学习Python?+免费Python视频教程相送

独自空忆成欢 提交于 2019-12-01 01:15:30
结合自己的学习经历,谈一谈如何学习Python吧。 入门阶段 Python其实语言本身已经很接近自然语言了,所以入门其实并不麻烦。如果你是从未接触过编程的萌新,给你推荐一门Udacity CS101,这门计算机导论课,大家可以自己去搜索,就不贴链接了。这么课不仅讲解python的一些语法,也会提到一些计算机的基础概念。 当然如果大家觉得视频太慢不适合自己的,推荐一本叫做《A Byte Of Python》的书,然后照着书里的代码自己敲一遍,基础的语法都有讲到,敲完一遍后,大概也就算入门的。这本书通过搜索引擎也很容易找到,有中文和英文两版的区别不大。当然,最重要的是你一定不能copy书里的代码,然后运行,学编程,不动手是不行的。而且敲的过程中,难免会有一些打错的地方,这时候根据错误信息,来学习一下如何debug也是极好的,当然这个过程里,你也能对python的编程环境熟悉。 编程环境的话可以选择文本编辑器+命令行运行,或者IDE的两种。前者推荐Sublime Text,后者推荐Pycharm,当然这只是一种推荐。 看完《A Byte Of Python》你应该对大部分语法比如控制语句,函数,对象等都有了一定的了解了,这时我强烈推荐大家廖雪峰的Python教程,这个教程前面讲的很基础,但是到后来开始讲一些Python的高级特性,看完你会感叹,“我的天,代码居然还能这样写。

Python零基础:从入门到精通(放弃)day05_容器类型_列表知识点及易错总结

一个人想着一个人 提交于 2019-11-30 23:20:29
注释: 蓝色 字体代表python内部语法关键字, 灰色 字体代表语句含义解释or代码范例, 红色 代表关键知识点。 列表 list 定义 由一系列 变量 组成 的 可变 序列容器。 /*--> */ /*--> */ 基础操作 1. 创建列表: 列表名 = [] 列表名 = list ( 可迭代 对象 ) 2. 添加元素: 列表名 . append ( 元素 ) 追加 列表 . insert (索引 值 ,元素 ) 插入 3. 定位元素: 列表名 [索引 ] = 元素 变量 = 列表名 [索引 ] 变量 = 列表名 [切片 ] # 赋值给变量的是切片所创建的新列表 列表名 [切片 ] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表,只是定位了列表位置。 遍历列表 (意思是将列表中元素依次赋值给创建的变量) :      正向:       for 变量名 in 列表名 :        # 变量名就是元素        反向:      for 索引名 in range ( len ( 列表名 ) -1,-1, -1 ):       # 列表名 [索引名 ] 就是元素 4. 删除元素:    列表名 . remove (元素 ) 删除原理:删除一个元素,覆盖上一个元素 例题: """ 将列表[4,5,566,5,7,47]中所有小于10的元素删除 """ #正解

Python为什么这么火?

岁酱吖の 提交于 2019-11-30 20:01:52
人生苦短,我用Python!对于学习 Python 的人来说肯定特别熟悉,当然这要归功于python强大的功能:它能把复杂的语言简单化,满足企业运维日常的数据分析和运维系统的管理,编写自动化运维平台,让运维更加的高大上。通过学习,去展示自己的技能实现高薪就业。 1、Python编程基础入门篇 通过本次课程的学习,我们每个人都可以进入python世界里,从简单到高级,让人人都能学会python,我们在学习的时候,python让我们的运维变得更有乐趣,让我们的运维更加的高大上,让我们的职业生涯更加深入。期待大家都能学会,有问题我们一起交流! 2、Python编程变量及常用算法 通过本次课程的学习,大家可以快速的了解python编程变量定义及在日常工作中用到的各种符号算法,本次课程我将跟大家一起来操练,真正的去体验python命令行的乐趣,让我们从此爱上python。 3、python编程条件语句学习 本次课程将讲解 python编程 中,经用到的条件语句,通过语句的练习和学习,对我们后期的python编程有非常大的好处。希望每个同学都能掌握这些常用的语句,并把它应用在我们的工作中。 4、Python编程函数及模块实战 通过本次课程的学习,大家可以在基础入门的基础上更上一层楼,体验python真正强大的地方, shell能完成的工作,python同样能完成

python正则表达式贪婪算法与非贪婪算法与正则表达式子模式的简单应用

柔情痞子 提交于 2019-11-30 19:58:05
先引入一下百度百科对于正则表达式的概念: 正则表达式是对 字符 串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 然后我们来引入一下贪婪算法与非贪婪算法的一个概念: 贪婪算法: 贪婪匹配(默认的):在整个表达式匹配成功的前提下,尽可能多的匹配 表达方式: .* .+ .? ······· 非贪婪算法: 贪婪匹配:在整个表达式匹配成功的前提下,尽可能少的匹配 表达方式: .* ? .+? .?? ······· 当然我们通过代码也可以看出来 import re html = """ <html> <div><p>九霄龙吟惊天变</p></div> <div><p>风云际会浅水游</p></div> </html> """ #贪婪匹配 pattern = re.compile('<div><p>.*</p></div>',re.S) #表达式为: .* r_list = pattern.findall(html) print(r_list) #非贪婪匹配 pattern = re.compile('<div><p>.*?</p></div>',re.S) #表达式为: .*? r_list = pattern.findall(html) print(r_list)

Python study one day

别说谁变了你拦得住时间么 提交于 2019-11-30 19:54:40
typora-root-url: ./assets 一、Python 语言介绍 1、Python 发展历史 Python 是由 Guido van Rossum (吉多·范罗苏姆)在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python 本身也是由诸多其他语言发展而来的,这包括 ABC、lisp、perl、C、C++、Unix shell 和其他的脚本语言等等。像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。现在 Python 是由一个核心开发团队在维护,Guido van Rossum(吉多·范罗苏姆) 仍然占据着至关重要的作用,指导其进展。 Guido van Rossum(吉多·范罗苏姆)个人事迹 2002年,在比利时布鲁塞尔举办的自由及开源软件开发者欧洲会议上,吉多·范罗苏姆获得了由自由软件基金会颁发的2001年自由软件进步奖。 2003年五月,吉多获得了荷兰 UNIX用户小组奖。 2006年,他被美国计算机协会(ACM)认定为著名工程师。 2005年12月,吉多·范罗苏姆加入Google。他用Python语言为Google写了面向网页的代码浏览工具。在那里他把一半的时间用来维护Python的开发。 2012年12月7日,Dropbox宣布吉多·范罗苏姆加入Dropbox公司