小菜鸟的python进阶之路
sinceNow
北葵向暖,南栀倾寒。
展开
-
小菜鸟的python进阶之路 ------- python3的特点(格式,注释,输入输出,内置函数)
python特点格式 注释 输入输出 内置函数 1.格式1.python3可以识别汉字,代码中不用添加_*_coding:utf-8_*_2.语句后没有分号3.严格按照缩进的语言2.注释单行注释#print('hello world') 多行注释"""print('hello westos')print('hi')""" 3....原创 2019-01-17 10:28:32 · 356 阅读 · 0 评论 -
四种经典查找算法(python实现)
四种经典排序算法(python实现)顺序查找 二分查找 差值查找 二叉树查找一、顺序查找'''顺序查找:1.算法思想:顺序查找,对于一个无序序列,遍历数组中的所有元素,对比每一个元素是否和要查询元素相等2.时间复杂度:o(n)3.空间复杂度:o(1)'''代码实现:def sequential_search(li, key):...原创 2019-05-20 21:07:46 · 580 阅读 · 1 评论 -
二叉树的重构(Python实现)
二叉树的重构1. 概念二叉树的重构是指通过二叉树的遍历结果得到二叉树的构造。重构方案:前序遍历(PreOrder)+中序遍历(InOrder) 后序遍历(PostOrder) + 中序遍历(InOrder) 前序遍历(PreOrder) ...原创 2019-05-11 09:52:17 · 841 阅读 · 0 评论 -
二叉树的经典面试问题
二叉树面试问题1:计算一共有多少个节点。'''算法思想:运用递归的思想,迭代计算出节点的个数。 遍历二叉树,分别计算左子树和右子树的节点个数,依次递归,最后返回左子树和右子树的总数和+1'''代码实现:class Node(object): '''节点类''' def __init__(self, elem, lch...原创 2019-05-20 21:14:33 · 617 阅读 · 0 评论 -
python 链表——单向链表的增、删、改、查
单向链表单向链表的节点实现class SingleNode(object): """单链表的节点""" def __init__(self, item): self.item = item self.next = None单链表的操作is_empty() #链表是否为空length() # 链表长度trave...原创 2019-08-01 21:18:08 · 548 阅读 · 0 评论 -
python链表 —— 单向链表逆序
如何实现链表的逆序方法一:就地逆序算法思想:在遍历链表的时候,修改当前节点的指针域的指向,让它指向它的前驱节点。因此,需要一个指针来保存它的前驱,此外,为了调整当前节点的指针域的指向后还能找到后继结点,还需要另外一个指针变量保存后继结点,在所有的节点都被保存好以后,就可以直接完成逆序了算法性能分析:这种方法对链表遍历一次,时间复杂度为o(N),N为链表的长度。但是需要常数个变量...原创 2019-08-01 21:48:00 · 524 阅读 · 0 评论 -
python链表 —— 有头结点和没有头结点的区别
不论是带头结点的链表还是不带头结点的链表,头指针head都指向链表中的第一个结点。如果该链表有头结点,则头指针head指向头结点,如果没有头结点,则头指针head指向链表的第一个节点。1 带头结点的单链表中头指针head指向头结点,头结点的值域不含任何信息,从头结点的后继结点开始存储信息。头指针head始终不等于NULL,head->next等于NULL的时候链表为空。2 不带头结点...原创 2019-08-08 11:21:01 · 3084 阅读 · 0 评论 -
python链表 —— 如何计算两个单链表所代表的数之和
题目描述:给定两个单向链表,链表的每个节点代表一位数,计算两个数的和方法分析:方法一: 整数相加分别遍历两个链表所代表的值,然后将两个整数加到一起方法二:链表相加法对链表中的节点直接进行相加操作,把相加的和存储到新的链表中对应的节点中,同时还要记录节点相加后的进位。算法性能分析:这种方法需要对两个链表遍历,因此时间复杂度为o(N),由于计算结果保存在一个新的链表中...原创 2019-08-08 11:28:43 · 566 阅读 · 0 评论 -
python链表 —— 如何从无序链表中移除重复项
方法一: 顺序删除算法思想:通过双层循环直接在链表上删除。外层循环用一个指针从第一个节点开始遍历整个链表,然后内层循环用另一个指针遍历其余节点与外层循环指针所指的节点的数据进行对比,若是相同则删除性能分析:该算法的时间复杂度为o(n*2),空间复杂度为o(n)#方法一:顺序删除class LNode(object): def __init__(self, item)...原创 2019-08-02 09:53:16 · 634 阅读 · 0 评论 -
python链表 —— 找出单链表中的倒数第K个元素
题目描述:找出单链表中的倒数第K个元素算法描述从头到尾遍历链表,在查找的过程中,设置两个指针,让其中的一个指针比另一个指针先向前移动K步,然后两个指针同时向前移动代码实现第二种方法:class LNode: def __init__(self, item): self.data = item self.next = None#创建一...原创 2019-08-08 16:28:49 · 429 阅读 · 0 评论 -
python中的多行输入
方法1:利用异常处理机制实现lines=[]while True: try: lines.append(input()) except: break方法二:利用标准输入文件对象sys.stdin的readlines()函数实现因为键盘是标准输入设备,计算机操作系统将键盘也是当做文件来对待的,其实计算机操作系统将包括键盘显示器鼠标打...原创 2019-08-13 15:59:28 · 16324 阅读 · 1 评论 -
python实现—— 判断字符串s2的任意排列是否是字符串s1的字串
题目描述:有两个字符串s1、s2,判断s1的字串是否第s2的任意排列第一种方法:切割字符串算法思想:将字符串s1切割成和s2一样长的字符串,判断切割后的这个字符串的元素和s2的是否一样,如果每个元素都一样,则判断截断的字符串排序之后和s2是否一样,若一样,即存在s1的字串是s2的其中一个排列代码实现:s1 = input()s2 = input()len_s1 = l...原创 2019-08-13 16:10:59 · 3523 阅读 · 0 评论 -
python链表 —— 对链表进行重新排序
题目描述:给定链表L0 —> L1 —> L2 .....Ln-1 —> Ln,把链表重新排序为L0 —> Ln —> L1 —> Ln-1 —>L2 —> Ln-2......要求:(1)在原来链表的基础上进行排序,即不能申请新的节点(2)只能修改节点的next域,不能修改数据域解题思路分析:(1)首先找到链表的中间节点...原创 2019-08-13 16:20:04 · 1232 阅读 · 0 评论 -
python链表 —— 检测一个较大的单链表是否有环
题目描述单链表有环是指单链表中某个节点的next域指向的是链表中在它之前的某一个节点,这样在链表尾部形成一个环形结构,如何半段一个链表是否有环思路使用两个指针,初始时两个指针均指向链表头位置,然后一个指针每次走两步,一个指针每次走一步,如果在循环过程中遇到两个指针相等,则说明有循环返回true。如果出现一个指针无法继续往下走,则退出循环返回false。因为fast先进入环,在slo...原创 2019-08-09 08:56:40 · 206 阅读 · 0 评论 -
python链表 —— 单向循环链表的增、删、查
单链表是一个变形的单向循环链表,链表中最后的一个节点的next域不再为None,而是指向链表的头结点单向循环链表的增、删、查实现class Node(object): def __init__(self, item): self.item = item self.next = Noneclass SinCyLinkList(object):...原创 2019-08-09 11:20:54 · 230 阅读 · 0 评论 -
python链表 —— 把链表相邻元素翻转
题目描述:把链表相邻的结点看成一组进行翻转。假设给定链表1—>2—>3—>4—>5—>6—>7—>8,那么翻转后的链表变为2—>1—>4 —> 3 —> 6 — >5 — >7。算法思想:就地逆序通过调整指针域的指向直接调换响铃的两个节点。如果单链表恰好有偶数个节点,那么只需要将就节点对调即可,如果链表有基数...原创 2019-08-23 14:25:31 · 645 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 带参数的装饰器
昨天,我们简单了解了装饰器,那么你了解装饰器带参数是怎样的吗??下面,我们用一个简单的例子来了解一下带参数的装饰器""" 编写装饰器required_types, 条件如下:# 1). 当装饰器为@required_types(int,float)确保函数接收到的每一个参数都是int或者float类型;# 2). 当装饰器为@required_types(lis...原创 2019-01-22 22:43:30 · 189 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 多个装饰器的执行顺序
装饰器可以在不改变源函数的基础上增加函数功能,那么如果一个函数由多个装饰器的装饰,执行的是顺序应该是怎样的??这个问题一直困扰了我很久,终于。。。下面我们先用一个简单的例子验证一下def one(func): print('----1----') def two(): print('----2----') func() return...原创 2019-01-22 22:26:27 · 224 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 装饰器
装饰器一般而言,我们要想拓展原来函数代码,最直接的办法就是侵入代码里面修改,如果我们不能进入代码中修改代码,我们该怎样办呢??这个时候,python的装饰器就给了我们很大的启发。那么,装饰器可以给我们提供什么好用的功能呢??功能:简言之,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数...原创 2019-01-21 22:47:50 · 172 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 变量和数据类型
一、数据类型int str float bool1. int:表示一个整形In [3]: age = 18In [4]: ageOut[4]: 182.str:表示一个字符串类型In [1]: name = '彭于晏'In [2]: nameOut[2]: '彭于晏'3.float:表示一个浮点型In [7]: height = 180.5...原创 2019-01-17 10:46:31 · 197 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- for循环和while循环练习
一、for循环for循环的语法 break,continue,exit()1.for循环的语法for 循环使用的语法 for 变量 in range(10): 循环需要执行的代码rangerange(start,stop,step):start-stop-1,步长step2.break,continue,exit()的区别break:跳出循环...原创 2019-01-17 11:36:03 · 707 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- for循环打印四种形式的星星
打印四个角的星星1.***************i = 1while i <= 5: j = 1 while j <= i: print("*",end='') j += 1 print() i += 12. ***************i = 5while i &...原创 2019-01-17 11:35:59 · 1383 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 字符串
字符串定义方法 字符串的特性 字符串的类型判断(可以补全) 字符串开头和结尾的判断 字符串的操作 1.定义方式a = 'hello'b = 'what\'s up'c = "what's up"2.字符串的特性索引 切片 重复 连接 成员操作符 迭代(1)索引s = 'hello'print(s[0])print(s[1])(2)切片...原创 2019-01-17 14:27:33 · 698 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 字典
字典定义字典 字典的特性 字典的增、删、改、查 1..定义字典字典是一个无序的数据集合,输出字典时,定义的顺序和输出的顺序不一致 s = {}定义字典:key-value:value可以是任意类型>>> dict = {'1':'hello','2':'word'}工厂函数定义字典d = dict() ##定义空字典print(d)字典...原创 2019-01-17 17:06:40 · 584 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 打印四种形状的9*9乘法表
打印9*9乘法表第一种:for i in range(1,10): for j in range(1,i+1): print("%d*%d=%d\t"%(j,i,i*j),end='') print() 第二种: i = 9while i > 0: j = 1 while j <= i: ...原创 2019-01-19 22:03:49 · 483 阅读 · 0 评论 -
Linux redhat7.0 源码编译安装python3.6
Linux redhat7.2下源码编译安装python3.6RedHat7.2中默认的python版本是python2.7,我们此次安装的是python3.6安装环境:Linux RedHat7.2系统 python3.6的安装包安装步骤:下载python3.6安装包 编译安装 ./configure make && make install 添加pyt...原创 2019-01-14 16:38:05 · 769 阅读 · 0 评论 -
Linux RedHat7.2下安装pycharm
Linux RedHat7.2下pycharm的安装与设置实验环境:Linux RedHat7.2系统 pycharm-community-2018.2.2.tar.gz安装包 安装步骤:第一步:下载pycharm-community-2018.2.2.tar.gz安装包(我的是从老师那儿拷贝过来的,在此不多说)解压安装包到/usr/local目录下[root@loca...原创 2019-01-14 17:29:36 · 1575 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 生成式
生成式 集合生成式 列表生成式 字典生成式 1.集合生成式格式:{ expression for i in 序列 if 条件 } 作用:生成一个集合示例:print({i ** 2 for i in {1,2,3,3}})print({i ** 2 for i in {1,2,3,9,12,9} if i % 3 == 0 })2.列...原创 2019-01-20 09:02:41 · 195 阅读 · 0 评论 -
pycharm中,代码下边有“波浪线”要怎么解决??
今天,在做练习的时候,打开pycharm,发现“代码下有‘波浪线’”(如下图所示),虽然并影响代码的运行,但是实在是不美观,要怎样才能将这个“波浪线”去掉呢?? 哈哈,其实很简单,关于pycharm的设置大都在“file--settinng”中进行设置我们找到"setting"下的"Inspections",将我们创建的项目(在这里我创建的是Pyrhon项目)后边置空即可 ...原创 2019-01-19 23:15:14 · 42872 阅读 · 6 评论 -
小菜鸟的python进阶之路 ------- 一道腾讯笔试题
题目如下:""" (2018-腾讯-在线编程题)- 题目描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))# [2,3,5,7]- 输入描述:输入包括一个整数n,(3 ≤ n < 1000)- 输出描述:输出对数-...原创 2019-01-19 23:21:39 · 258 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 高阶函数
高阶函数高阶函数 python中的内置高阶函数 1.高阶函数特点: 实参是一个函数 函数的返回值也是一个函数示例:abs() #求绝对值的函数f = abs #函数本身可以赋值给变量,变量也可以指向函数def fun(x,y,f): #传递的参数包括函数名 return f(x),f(y) #返回值是函数...原创 2019-01-19 23:47:58 · 289 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- sorted函数和sort函数
在Python中提供了两个方法可以的对给定的列表进行排序,有两种方法:方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2.用built-in函数sorted进行排序,返回副本,原始输入不变示例:li = [5,3,2,4]第一种sort方法:li.sort(reverse=True)print(li)第二种sorted函数:a=sort...原创 2019-01-21 21:38:26 · 877 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 一道关于排序的携程笔试题
(2018-携程-春招题)题目需求:给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;在原始数组上进行移动操作, 勿创建新的数组; 输入: 第一行是数组长度, 后续每一行是数组的一条记录; 4 0 7 0 2输出: 调整后数组的内容; 4 7 2 0 0def move_...原创 2019-01-21 22:11:05 · 256 阅读 · 0 评论 -
小菜鸟的python进阶之路 ------- 匿名函数
匿名函数1.特点:匿名函数的关键字是lambda,冒号前面是形参,冒号后面是返回值练习1:求1+2+3+4+5from functools import reducedef add(x,y): return x+yprint(reduce(lambda x,y:x+y,[1,2,3,4,5])) 练习2:求0-5的平方print(list(map(l...原创 2019-01-21 22:31:38 · 248 阅读 · 0 评论 -
python实现贪婪算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。通俗一点讲,当要解决某一个问题时,先判断第一步的最优解,然后把剩下的步骤看作下一个递归的具体问题。代码实现:if __name__ == "__main__": beg = 50 value = 0 choice =...原创 2019-08-10 11:18:36 · 1138 阅读 · 0 评论