
Python
文章平均质量分 90
yongh701
这家伙很聪明,什么都没有留下
展开
-
【Python】Windows版本的Python开发环境的配置,Helloworld,Python中文问题,输入输出、条件、循环、数组、类
Python这东西似乎很有用的样子,但不知道为何一直火不起来,有可能是因为这东西太难读~读作什么,派神。英语不好的人,第一眼看上去就懵了,还经常拼错,呵呵!不过怎么说都好关键是要会。一、Python开发环境的配置1、首先打开Python的官网https://www.python.org/downloads/下载(点击打开链接)Python的开发环境。这东西是基础的基础,原创 2015-07-10 10:16:54 · 3085 阅读 · 0 评论 -
【Python】无须numpy,利用map函数与zip(*)函数对数组转置
在Python的numpy中,对类似array=[[1,2,3],[4,5,6],[7,8,9]];的二维数组的转置,就一句话array.T。其实不使用numpy,单纯使用Python,代码也不长,同样也是一行。不过在此之前,先说明Python中map函数与zip(*)的使用。一、map函数首先Python中的map函数是很简单的。意为将第二个参数(一般是数组)中的每一个项,处理为第一个参原创 2015-12-13 16:19:41 · 20048 阅读 · 0 评论 -
【Python】利用setdefault函数实现dict的转置(key与value对互换),统计value出现的次数
所谓dict的转置也就是key与value对的互换。这里唯一的问题是,Python要求dict中一个key仅能对应一个value而不能对应多个。因此,如果对于dic = {"a":2, "b":1, "c":2, "d":2, "e":1};这样一个dict,单纯地交互key与value的位置,# -*-coding:utf-8-*-dic = {"a":2, "b":1, "c":2,原创 2015-12-13 17:25:21 · 5614 阅读 · 0 评论 -
【Python】求数组(list)中最大的X个数,不递归,尽可能减少代码量
在Python中求数组中最大值、最小值直接有max(list),min(list)这个没什么好说的, 就算不知道有这个封装好的方法,直接用C语言那种求一个数组的最大值、最小值也是没问题的。然而,求数组(list)中最大的X个数,这就麻烦大了,这涉及了所谓的TOP-K算法。网上对于TOP-K算法的解决主要有快速排序与堆的处理,个人认为这都不是好方法。这两个方法,时间复杂度、空间复杂度绝对是传世经典,原创 2015-11-21 16:47:54 · 7219 阅读 · 2 评论 -
【Python】利用count函数求list中每个元素出现的次数,求众数的改进
在《【Python】利用setdefault函数实现dict的转置(key与value对互换),统计value出现的次数》(点击打开链接)中介绍过,如何统计dict中相同value的key的出现次数。本文介绍如何利用list自带的count函数,来统计list中每个元素出现的次数。具体代码如下:arr_appear=dict((a,arr.count(a)) for a in arr);原创 2015-12-14 16:45:32 · 30536 阅读 · 3 评论 -
【Python】Mysql数据库操作类
在《【Python】Windows平台下Python、Pydev连接Mysql数据库》(点击打开链接)中介绍了如何为Python与Eclipse中的Pydev环境增加Mysql的操作能力。下面为Python的Mysql数据库操作设置一个类,以后每次使用就不会将代码写得七零八落了,尽管Python是简直有爱的脚本语言,但还是要将代码写得尽可能好看。还是完成《【Java】利用单例模式、可变参数原创 2015-11-27 20:56:41 · 6689 阅读 · 0 评论 -
【Python】构造函数、析构函数与可变参数传递
在《【Python】Windows版本的Python开发环境的配置,Helloworld,Python中文问题,输入输出、条件、循环、数组、类》(点击打开链接)虽然一定程度上介绍了Python中类的用法,然而并没有涉及到类中最重要的两个东西,一个是构造函数,另一个是析构函数。构造函数的作用是保证每个对象的数据成员都有何时的初始值。析构函数的作用是回收内存和资源,通常用于释放在构造函数或对象原创 2015-11-27 17:13:03 · 5792 阅读 · 0 评论 -
【Python】用zip函数求欧氏距离、余弦相似度
首先欧氏距离,如此高大上的名称,其实大家都学过的也就是坐标系,或者说是N维向量坐标系的两点之间的距离^_^。也被称作“欧几里得度量”。在二维坐标系,公式是这样:在N维坐标是,公式就是:而余弦相似度,就是两个向量的夹角余弦值,这个数值常用来评估他们的相似度,具体的公式如下:,换算成具体的数值就是:也就是说具体为两个向量的点乘积(数量积、内积)除于各自的模之积当然,本文不是来介原创 2015-12-02 20:46:45 · 21865 阅读 · 0 评论 -
【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印到控制台
python作为数据分析的利器,求极差、平均数、中位数、众数与方差是很常用的,然而,在python进行统计往往要使用外部的python库numpy,这个库不难装,然而,如果单纯只是求极差、平均数、中位数、众数与方差,还是自己写比较好,因为,给一个.py程序别人的机器,别人的机器上没有python库numpy,又要别人折腾一番,这很不好。不过看情况咯,如果你要处理上亿级的数据,还是配置一下外部的py原创 2015-12-02 17:07:35 · 43383 阅读 · 5 评论 -
【Python】线程的创建、执行、互斥、同步、销毁
还是《【Java】利用synchronized(this)完成线程的临界区》(点击打开链接)、《【Linux】线程互斥》(点击打开链接)、《【C++】Windows线程的创建、执行、互斥、同步、销毁》(点击打开链接)中的设置多个线程对一个ticket进行自减操作,用来说明Python中多线程的运用,涉及的创建、执行、互斥、同步、销毁问题。运行结果如下,还是差不多,运行三次,每次的运行结果,每个原创 2016-01-13 17:00:18 · 8091 阅读 · 0 评论 -
【Python】批量创建线程
在《【Python】线程的创建、执行、互斥、同步、销毁》(点击打开链接)中介绍了Python中线程的使用,但是里面线程的创建,使用了很原始的方式,一行代码创建一条。其实,Python里是可以批量创建线程的。利用Python批量创建线程可以将之前的程序优化,具体请看如下的代码:# -*-coding:utf-8-*-import threading;mutex_lock = threadin原创 2016-05-04 11:10:15 · 7478 阅读 · 0 评论 -
【Python】将Python发布成exe
众所周知,在安装了python的机器,通过命令行中的python xx.py,可以运行这个python文件,而如果你想在一些没有安装Python的机器,运行你的python文件,你可以利用py2exe这个组件将其打包成exe。py2exe组件的安装极其简单,打开其托管在sourceforge的页面https://sourceforge.net/projects/py2exe/files/py2原创 2016-05-05 21:43:50 · 9833 阅读 · 2 评论 -
【Python】Mysql中文乱码问题与MySQLdb对Mysql操作类的改进
Python的MySQLdb对Mysql的字符串字段的中文查询出现问题,主要原因是在MySQLdb.connect中缺少一个charset="utf8"参数。与那个在PyDev还报错的sys.setdefaultencoding("utf-8")无关。保证表是utf-8编码就可以了。同时如果MySQLdb只是单纯对Mysql作单纯查询,并不用像《【Python】Mysql数据库操作类》原创 2015-12-13 15:15:12 · 1069 阅读 · 0 评论 -
【Python】输出程序执行的百分比
对于一些大型的Python程序,我们需要在命令行输出其百分比,显得更加友好,以免被人误会程序陷入死循环、假死的窗体。关键是利用到不换行的输出符\r,\r的输出,将直接覆盖掉此行的内容。比如如下的程序,是一个i从0自加的十万的过程,即使对于现在高性能的CPU也是需要几秒的时间的,我们要输出其执行时候的百分比,可以在引入sys这个包之后,利用到sys.stdout.write输出,避免原生态的原创 2015-08-21 11:25:39 · 8712 阅读 · 1 评论 -
【Python】变量数值交换、判断数组是否含有某个元素
本来,这两个问题都属于的编程入门简单得不能再简单的问题,根本就不值得写篇记录来记录的。一、变量数值交换先说变量数值交换,从C语言开始,我们就知道要先设置一个临时变量,再把某元素的值覆盖此临时变量,避免临时覆盖等,如果不设置临时变量,还有位运算的交换形式然而Python中根本就不用这么复杂,如果要交换变量e1,e2彼此的值,就下面一行代码就足矣:e1,e2=e2,e1;比如,如下原创 2015-08-21 10:58:27 · 7007 阅读 · 0 评论 -
【Python】容器类
容器类一度活跃在各大编程语言当中,Python中同样存在容器,同时不像Java中这么复杂,仅保留两个,主要是其列表类,也就是可变长数组,相当于Java中的ArrayList,还有一个集合,里面的元素无序,不允许重复,相当于Java中的HashSet。同时还是有一个字典,就是JavaScript中鼎鼎大名的Json数组,也就是Java中的HashMap。Java中的容器类在《【Java】Java中的原创 2015-07-15 19:50:52 · 4610 阅读 · 0 评论 -
【Python】关于递进错误indentationerror
虽然众所周知,Python里面的条件结构if与循环结构for是没有括号的{},对于是否在结构体的内的语句识别,主要利用句子前的递进关系,判断语句是否在结构体内,如果一旦出现递进不一致的问题,Python就会出现indentationerror的递进报错,这属于非程序范畴的,主要是没有好好排版的问题,但是,一些就算排好版的程序,也会出现这样情况,主要是递进的字符看起来一致,实质不一致,一个Pytho原创 2015-08-24 17:02:40 · 17190 阅读 · 0 评论 -
【Python】利用当前时间、随机数产生一个唯一的数字
Python生成当前时间很简单,比Java的代码简短多了,Java产生时间具体详见《【Java】有关System.currentTimeMillis()的思考》(点击打开链接)具体代码如下:#-*-coding:utf-8-*-import datetimenow = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")print原创 2015-07-16 15:19:12 · 21609 阅读 · 1 评论 -
【Python】文件读写操作
Python的文件读写有点类似php的文件读写。php的文件读写已经在《【php】让记事本成为你调控变量的控制台》(点击打开链接)说过了,下面用一个小例子说明Python的文件读写。在F盘原本是没有f:\你好.txt这个文件的,我们要把用户在Python控制台输入的内容,搞到这个文件上去。本程序在Eclipse下的Pydev编译通过没有乱码,Windows控制台cmd的乱码问题请参考《【Pyt原创 2015-07-16 11:04:53 · 2728 阅读 · 0 评论 -
【Python】遍历某目录下的所有文件夹与文件的路径、输出中文乱码问题
本文与《【Java】读取其下所有文件夹与文件的路径》(点击打开链接)为姊妹篇,主要讲述Python对于文件信息的读取操作。Python对于文件信息的读取操作,在其固有类os中。下面以读取F盘下的所有文件夹作为例子说明这个问题:Python对于文件夹的遍历有两种写法,一种是直接利用其封装好的walk方法直接操作。这是Python做得比Java优势的地方:# -*-co原创 2015-07-16 10:07:40 · 12540 阅读 · 1 评论 -
【Python】获得Python程序所在的路径
Python脚本输出自己所除的目录,比《【C++】求当前exe的运行路径》(点击打开链接)、《【Java】取当前.class文件的编译位置》(点击打开链接)都要简单,引入了os与sys固有类之后,可以自由输出目录或者自己的文件名,代码如下:import os;import sys;print os.getcwd();print sys.argv[0];运行结果如下:原创 2015-07-29 11:13:53 · 1816 阅读 · 1 评论 -
【Python】按行读取文件、IOError: [Errno 22] invalid mode ('a+') or filename,处理文件的换行符
Python一次性读取文件的所有内容在《【Python】文件读写操作》(点击打开链接)中已经说明过的,但有些时候,需要对文件中的每一行进行处理。比如有一个f:\1.txt如下:此时,如果要按行读取这个文件,可以直接利用Pyhon的for循环来读取,其中for的对象是这个文件指针,代码如下:file_path="f:\\a.txt"fp=open(file_path,"a+")原创 2015-07-30 11:19:36 · 7128 阅读 · 0 评论 -
【Python】删除数组多个元素所产生的问题
如下的一段小程序,#-*-coding:utf-8-*-arr=[1,2,3];for a in arr: if a<3: arr.remove(a);print arr;我本来想用数组中自动封装好的remove()方法,删除数组arr中少于3的元素。这个方法删除数组中单个元素是没有任何问题,但是如果想删除arr中,少于3的元素问题就来的。arr中有三原创 2015-07-31 11:04:44 · 8294 阅读 · 1 评论 -
【Python】Windows平台下Python、Pydev连接Mysql数据库
Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb。Python连接Mysql数据库是很简单的。首先,你要配置好Python的开发环境,详见《【Python】Windows版本的Python开发环境的配置,Helloworld,Python中文问题,输入输出、条件、循环、数组、类》(点击打开链接),与Mysql的开发环境,详见《【Mysql】Mysql的安装、部署原创 2015-08-18 11:23:32 · 5001 阅读 · 0 评论 -
【Python】读取命令行参数、在PyDev中设置Python运行时的参数
有时候,我们写的命令行程序需要批次执行,这里可以让Python程序读取命令行参数,再编写一个命令行批次执行脚本.bat,实际上就是一个充满命令的、改了后缀名的文本文件,在多个测试用例扔进Python程序中是非常有用的。例如,如下图,有一个cmdArgs.py程序,当在python cmdArgs.py 后面带上-h -i,程序则输出-h与-i参数,后面所带内容:如果输入其它参数,比原创 2015-08-05 19:19:21 · 4876 阅读 · 2 评论 -
【Python】求程序的运行时间
要记录程序的运行时间可以利用Unix系统中,1970.1.1到现在的时间的毫秒数,这个时间戳轻松完成。方法是程序开始的时候取一次存入一个变量,在程序结束之后取一次再存入一个变量,与程序开始的时间戳相减则可以求出。Python中取这个时间戳的方法为引入time类之后,使用time.time();就能够拿出来。也就是Java中的System.currentTimeMillis()。由于Py原创 2015-08-06 10:41:35 · 27231 阅读 · 1 评论 -
【Python】求笛卡尔乘积
在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0), (a,1), (a,2), (b,0), (b,1), (b, 2)}。有时我们需要在python求两个list的笛卡尔乘积,其实很简单,一行原创 2016-09-21 11:05:40 · 22999 阅读 · 0 评论