前几天看到一个关于Python的面试题lst=[1,2,[3]]lst1=lst*2#[1,2,[3],1,2,[3]]lst1[2].append(4)#[3,4]print(lst1)开始时,就处理错了。最终上机测试发现,乘法貌似是内存地址的拷贝。也就是说lst1[2]和lst1[5]都指向同一个对象,最终lst1结果如下:print(lst1)#[1,2,[3,4],1,2,[3,4]]
系统 2019-09-27 17:52:30 2250
今天在写一个linux下自动备份指定目录下的所有目录的脚本时,遇到了一个问题,由于我是需要备份目录,所以,需要判断扫描的文件是否为目录,当我用os.path.isdir()来判断的时候,发现所有文件均返回false,刚开始以为是系统兼容性问题,进一步测试,发现用os.path.isfile(),这些文件还是返回false,这肯定就是程序写的有问题了,代码如下:#!/usr/bin/envpython#apythonscripttoautobackupadi
系统 2019-09-27 17:52:29 2250
1.枚举-enumerate可以有参数哦之前我们这样操作:i=0foriteminiterable:printi,itemi+=1现在我们这样操作:fori,iteminenumerate(iterable):printi,itemenumerate函数还可以接收第二个参数。就像下面这样:>>>list(enumerate('abc'))[(0,'a'),(1,'b'),(2,'c')]>>>list(enumerate('abc',1))[(1,'a')
系统 2019-09-27 17:52:08 2250
本来我一直不知道怎么来更好地优化网页的性能,然后最近做python和php同类网页渲染速度比较时,意外地发现一个很简单很白痴但是我一直没发现的好方法(不得不BS我自己):直接像某些php应用比如Discuz论坛那样,在生成的网页中打印出“本页面生成时间多少多少秒”,然后在不停地访问网页测试时,很直观地就能发现什么操作会导致瓶颈,怎样来解决瓶颈了。于是我发现SimpleCD在生成首页时,意外地竟然需要0.2秒左右,真真不能忍:对比Discuz论坛首页平均生成
系统 2019-09-27 17:50:42 2250
1.字符串的表示字符串是字符的序列表示,可以由一对单引号(‘)、双引号(“)或三引号(’‘’)构成。其中,单引号、双引号和三引号都可以表示单行字符串,但是只有三引号可以表示多行字符串在使用双引号时,单引号可以作为字符串的以部分。2.对字符串类型进行操作Python提供了5个字符串的基本操作符,对字符串进行基本的操作,如下表所示:(其中x和y均为字符串类型)基本字符串类型操作符操作符描述x+y连接两个字符x*n或n*x(n为整数)复制n次字符串xins如果x
系统 2019-09-27 17:49:13 2250
使用介绍如何添加断点?说到debug,肯定是要添加断点的,这里有两种方式添加断点:在想要断点代码后添加一行pdb.set_trace()若是使用这种方式,直接运行Python文件即可进入断点调试。用命令行来添加断点bline_number若是使用这种方式,需要python-mpdbxxx.py来启动断点调试。常用命令先简单介绍一下使用命令,这里不用记住,等用到的时候回来查就行。1进入命令行Debug模式,python-mpdbxxx.py2h:(help)
系统 2019-09-27 17:48:35 2250
上篇文章我们介绍了树的概念,今天我们来介绍一种特殊的树——二叉树,二叉树的应用很广,有很多特性。今天我们一一来为大家介绍。二叉树顾名思义,二叉树就是只有两个节点的树,两个节点分别为左节点和右节点,特别强调,即使只有一个子节点也要区分它是左节点还是右节点。常见的二叉树有一般二叉树、完全二叉树、满二叉树、线索二叉树、霍夫曼树、二叉排序树、平衡二叉树、红黑树、B树这么多种类。我们这篇文章中简单介绍一般二叉树、完全二叉树和满二叉树。一般二叉树很简单,只要满足子节点
系统 2019-09-27 17:47:38 2250
问题背景从许多中文的参考文献上,rstrip()函数的功能被简单描述为:删除字符串末尾的指定字符(默认为空格),我的理解是,直接去掉末尾指定的字符序列,如我传入的是d,则会去掉末尾的字符d(如果存在),如果传入了字符ad,则去掉末尾的字符ad(如果存在),直到我们开发的服务遇到了一个非常奇怪的bug之后,下面是奇怪问题的复现过程:>>>s='hello_world'>>>s.rstrip('d')#去除末尾的字符d'hello_worl'>>>>>>s.r
系统 2019-09-27 17:46:47 2250
========坚持30天刷leetcode=====题目链接:https://leetcode-cn.com/problems/next-permutation/结果:分析:思路是:1)从后往前找不符合降序(大->小,可以相等)的第一个元素a,2)然后从a的下一个元素开始往后找,找到最后一个大于a的元素b,3)交换a,b的位置,4)再将原先a位置后的所有元素,进行升序排序5)特殊情况①:数组全为降序,逆转数组;特殊情况②:找到a后,a比数组最后一个元素c
系统 2019-09-27 17:46:33 2250
进度条实现原理进度条和一般的print区别在哪里呢?答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条?实现进度条最简单的办法就是,在输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果。在用Python
系统 2019-09-27 17:38:31 2250