python算法

Python面试的一些心得,与Python练习题分享

前提是你 提交于 2019-12-04 09:03:19
版权声明:本文为CSDN博主「华为云」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/devcloud/article/details/100917665 关于基础 项目打算招聘一个自动化运维,主要需求是python、Linux与shell脚本能力。但面试几天发现一些问题: 简历虚假 这个不管哪行,简历含水量大都是普遍存在的,看简历犀利的一比,一面是能力弱的一腿。谁都希望自己80分的能力写成120,但有时候假的有些离谱,问一两个问题就漏气了… 年龄与薪酬 目前的IT行业,最敢坐地起薪的就是27–33这年龄段的,低于范围的往往因为能力或者说跳槽经验少,而不敢要高价,高于这个年龄的感觉失去了针对年轻人的干劲与学习能力,所以起薪不算太高或者浮动好商量。当然这里说的是普遍情况,而不包含那些能力较强的精英人才。 重高端轻基础 经常你会发现,接受面试的人,上来就跟你说做过什么类似高端的、前沿的技术。你挑着问你个问题,回答的还行。反而你问一些较为基础的东西时,却回答的不尽人意。但有时候,BUG往往都发生在那些细小的基础环节。 举几个这几天的例子: list tuple dict set 是可迭代对象,那么字符串是否为可迭代对象? 头脑一热的,马上回答不是,但其实… 1 >>> from

如何捅破python编程的那层纸之三

本秂侑毒 提交于 2019-12-04 06:33:33
# coding:utf-8 """ 如何捅破python编程的那层纸之三 贴吧上有人问 定义一个函数,名字为sameSums(aList),alist是一个整形list,函数作用是判断能分成两组,使得两组数字的和相等。若可以择返回值是true,若不可以返回值是false。如下例: sameSums([4, 7, 6, 3]) --> True //4+6 = 10 and 7 + 3 = 10 sameSums([3, 3]) --> True sameSums([4, 12, 16]) --> True //4+12= 16 and 16 sameSums([5, 1]) --> False 这个题目,对初学者来说,有点难度,但稍微有点算法基础,编程思路,就不难。 前面用贪心算法,只能满足上面4个测试用例的正确解决。 如何捅破python编程的那层纸之二 https://github.com/pythonpeixun/article/blob/master/pythonstudy2.md 但是对[4, 5, 6, 7, 8],[2, 2, 2, 3, 3]这样的list,不能解答出正确的答案。 这个问题:可以用递归解题,也可以用动态规划解题,黄哥用这样的思路解一下,供初学者参考! 解题思路: 1、如果sum(list) 是奇数,就不能将list拆分为2个和相等的list 2

《信息安全专业导论》第六周学习总结

浪尽此生 提交于 2019-12-04 04:38:10
《信息安全专业导论》第六周学习总结 《计算机科学概论》 在本周的学习中,我主要学习了问题求解和算法设计的简单内容,学习了简单的算法的编写和算法的作用,学习到了几种搜索算法和排序算法的原理和运用。 python学习 在python的学习中,本周主要学习了list的运用。 其他 本周还学习了xor加密的原理和编写(虽然只是对网上的代码进行改动)、求最大公约数的伪代码。 来源: https://www.cnblogs.com/wzwyoshino/p/11831597.html

Python 算法

两盒软妹~` 提交于 2019-12-04 04:25:31
对几种算法做说明: 名称 复杂度 说明 备注 冒泡排序 Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 插入排序 Insertion sort O(N*N) 逐一取出元素,在已经排序的元素序列中从后向前扫描,放到适当的位置 起初,已经排序的元素序列为空 选择排序 O(N*N) 首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此递归。 找最小元素排序 快速排序 Quick Sort O(n *log 2 (n)) 先选择中间值,然后把比它小的放在左边,大的放在右边(具体的实现是从两边找,找到一对后交换)。然后对两边分别使用这个过程(递归)。 确定中间值和索引的排序 堆排序HeapSort O(n *log 2 (n)) 利用堆(heaps)这种数据结构来构造的一种排序算法。堆是一个近似完全二叉树结构,并同时满足堆属性:即子节点的键值或索引总是小于(或者大于)它的父节点。 近似完全二叉树 希尔排序 SHELL O(n 1+ £ ) 0<£<1 选择一个步长(Step) ,然后按间隔为步长的单元进行排序.递归,步长逐渐变小,直至为1. 箱排序 Bin Sort O(n) 设置若干个箱子,把关键字等于 k 的记录全都装入到第k 个箱子里 ( 分配 )

Python数据分析实战:泰坦尼克号之灾与机器学习算法-CSDN公开课-专题视频课程...

自古美人都是妖i 提交于 2019-12-04 00:32:49
Python数据分析实战:泰坦尼克号之灾与机器学习算法—1573人已学习 课程介绍 泰坦尼克号遇难获救预测是kaggle(数据建模与数据分析竞赛平台)上的一道just for fun的题,数据整洁,拿来练手,是极好的。这是个二元分类的机器学习问题,但是由于数据样本相对较少,在当时慌乱的情况下幸存者有一定的随机性,所以还是有一定挑战的。 课程收益 这道挑战题很经典,但是!在这次分享上,唐宇迪老师会用最通俗易懂的方式一步步讲解每一行代码,以及机器学习算法(逻辑回归与决策树),不仅适合正在学习数据分析和机器学习的同学,同样能帮有些基础的同学带入门。 讲师介绍 CSDN公开课 更多讲师课程 CSDN线上公开课全掌握! 课程大纲 1. 泰坦尼克号之灾与机器学习算法(上) 49:27 2. 泰坦尼克号之灾与机器学习算法(下) 49:28 大家可以点击【 查看详情 】查看我的课程 来源: CSDN 作者: CSDN学院官方账号 链接: https://blog.csdn.net/csdngkk/article/details/83576219

python排序查找

落花浮王杯 提交于 2019-12-03 23:54:43
1、二分查找 二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 # 返回 x 在 arr 中的索引,如果不存在返回 -1 def binarySearch (arr, l, r, x): # 基本判断 if r >= l: mid = int(l + (r - l)/2) # 元素整好的中间位置 if arr[mid] == x: return mid # 元素小于中间位置的元素,只需要再比较左边的元素 elif arr[mid] > x: return binarySearch(arr, l, mid-1, x) # 元素大于中间位置的元素,只需要再比较右边的元素 else: return binarySearch(arr, mid+1, r, x) else: # 不存在 return -1 # 测试数组 arr = [ 2, 3, 4, 10, 40 ] x = 10 # 函数调用 result = binarySearch(arr, 0, len(arr)-1, x) if result != -1

运维如何通过学习python学会编程

…衆ロ難τιáo~ 提交于 2019-12-03 22:21:36
运维如何通过学习python学会编程 运维必须懂开发,特别是python开发,已经形成大家的共识,不懂开发的运维,路会越走越窄。 黄哥,从2012年底,从事python教学过程中,接触到很多运维的朋友。部分运维是自学的Linux 或者是从运维培训班出来的。他们对编程懂很少或懂一些shell开发。 部分运维遇到的困难是:有的连书都不懂;有的书是可以看懂,别人写的简单代码也可以看懂,但自己不会写代码解决问题。 黄哥提出一个观念:学习编程不止是学习语法,需要大力学习计算思维,解决问题的方法,算法,编程思路。 何为计算思维: 计算思维(Computational Thinking)概念的提出是计算机学科发展的自然产物。 第一次明确使用这一概念的是美国卡内基·梅隆大学周以真(Jeannette M. Wing)教授。 计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为; 计算思维最根本的内容,即其本质是抽象和自动化。 编程思路,其实就是计算思维的具体体现,用语法来表达解决问题的方法、算法。 下面说说如何学习python 1、买一本好书,黄哥推荐看《python核心编程第2版》,书有一本足以。 2、边看书,需要边敲代码,书上每一个代码都需要敲一遍,敲的过程中,才能碰到问题。碰到问题,想办法 解决,才能提高。 3、还需要做适当的习题来加强学习。 4、python有多种编程范式

谁会成为AI 和大数据时代的第一开发语言?毫无疑问是Python

夙愿已清 提交于 2019-12-03 22:17:18
谁会成为AI 和大数据时代的第一开发语言? 这本已是一个不需要争论的问题。如果说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年之后,趋势已经非常明确了,特别是前两天 Facebook 开源了 PyTorch 之后, Python 作为 AI 时代头牌语言的位置基本确立 ,未来的悬念仅仅是谁能坐稳第二把交椅。 不过声音市场上还有一些杂音。最近一个有意学习数据科学的姑娘跟我说,她的一个朋友建议她从 Java 入手,因为 Hadoop 等大数据基础设施是用 Java 写的。 这篇文章本身算得上是客观公正,实事求是,但传到国内来,就被一些评论者曲解了本意,说 Python 的优势地位尚未确立,鹿死谁手尚未可知,各位学习者不可盲目跟风啊,千万要多方押宝,继续撒胡椒面不要停。 在这里我要明确表个态,对于希望加入到 AI 和大数据行业的开发人员来说,把鸡蛋放在 Python 这个篮子里不但是安全的,而且是必须的。 或者换个方式说,如果你将来想在这个行业混,什么都不用想,先闭着眼睛把 Python 学会了。 当然,Python不是没有它的问题和短处,你可以也应该有另外一种甚至几种语言与 Python 形成搭配,但是Python 将坐稳数据分析和 AI 第一语言的位置,这一点毫无疑问。 我甚至认为,由于 Python 坐稳了这个位置

转:花了三个月终于把所有的Python库全部整理了!

三世轮回 提交于 2019-12-03 21:04:30
链接:https://www.jianshu.com/p/2642f9d28f34 库名称简介 Chardet字符编码探测器,可以自动检测文本、网页、xml的编码。 colorama主要用来给文本添加各种颜色,并且非常简单易用。 Prettytable主要用于在终端或浏览器端构建格式化的输出。 difflib,[Python]标准库,计算文本差异 Levenshtein,快速计算字符串相似度。 fuzzywuzzy,字符串模糊匹配。 esmre,正则表达式的加速器。 shortuuid,一组简洁URL/UUID函数库。 ftfy,Unicode文本工具7 unidecode,ascii和Unicode文本转换函数。 xpinyin,将汉字转换为拼音的函数库 pangu.py,调整对中日韩文字当中的字母、数字间距。 pyfiglet,Python写的figlet程序,使用字符组成ASCII艺术图片 uniout,提取字符串中可读写的字符 awesome slugify,一个Python slugify库,用于处理Unicode。 python-slugify,转换Unicode为ASCII内码的slugify函数库。 unicode-slugify,生成unicode内码,Django的依赖包。 ply,Python版的lex和yacc的解析工具 phonenumbers

面向对象特性与类的重要属性

感情迁移 提交于 2019-12-03 20:33:33
一、面向对象的特性 1. 回顾封装 Python不依赖语言的特性去封装数据,而是通过遵循一定的数据属性或函数属性的命名来达到封装的效果。任何以单下划线开头的名字都应该是内部的、私有的。封装的意义在内部业务逻辑的数据隐藏。Python真正意义上的封装是用类的内外访问来区分的。并且它与Java的private属性有很大的区别,Python并没有强制性的拒绝外部类对私有属性的访问。换句话说,以单下划线或双下划线开头的私有属性仅仅只是一种约定。 (1)第一层封装 : 使用以单下划线开头的私有属性。对象在调用时可直接使用“对象名 . 私有属性名”; (2)第二层封装 :使用以双下划线开头的私有属性。对象在调用时不能直接使用“对象名 . 私有属性名”。需要在双下划线开头的私有属性前加上“_类名”,如:“对象名 . _类名 . 私有属性名”。 (3)第三层封装 :使用自定义的函数来提供接口。明确区分内外,实现内部业务逻辑的封装,并像java的setter和getter方法一样给出外部程序的使用自定义的接口函数,让该接口函数返回一个值私有的性。 2. Python的继承 Python的继承与C++的多继承非常相似,它的继承关系会被解释器解释为一个MRO列表,该MRO列表就是一个简单的所有基类的线性顺序列表。MRO列表的构造是通过一个C3线性化算法来实现的。Python和java一样