随笔分类 - Python
摘要:pip是一个可以替代 easy_install 的安装和管理 python 软件包的工具,具体可以安装的 python 包可以在这里查看Python Package Index。在 fedora 下提供了 python-pip 包用于安装 pip,和其他系统不同的是用 pip-python 命令来运行的:tiny@i ~$ yum search python-pip======================= N/S Matched: python-pip ========================python-pip.noarch : Pip installs packages. .
阅读全文
摘要:创建一个成功的开源Python项目所涉及的并不仅仅是编写有用的代码,与其相关的还有社区的参与、越来越多的合作机会、技艺以及支持等。探索最佳的做法有助于你创建出自己的成功项目。开源Python项目的生态系统丰富多样,这使得您能够站在巨人的肩膀上来开发下一个开源项目。此外,这意味着存在一系列的社区规范和最佳做法,通过遵守这些约定并把这些做法应用到项目中,你可以为自己的软件赢得更广范围的采用。本文涵盖了一些在构建大型和小型的项目时都运作得很好的实践做法,这些项目都已经赢得了广泛的用户群体。这里给出的这些建议的都是合理的、有其意义的,不过,因为结果可能会有所不同,所以不必把它们当成严格的教条来遵守。首
阅读全文
摘要:看到有人写的用 c++ 写的世界完全对称日(如今天:2011 1102)的计算,我也来用 python 玩玩主要思路是将年份数字反转作为月日对应的数字,使其满足完全对称的条件,然后判断此日期是否有效,如果有效则输出代码如下:# -*- coding: utf-8 -*-# Author: TinyZ# Filename: symmetry_date.py# Date : Nov 2, 2011import datetime,timedef strToDatetime(datestr,format='%Y%m%d'): try: return datetime.dateti...
阅读全文
摘要:1.在可hash的情况下使用set,时间复杂度为 O(n)return list(set(s))2.不可hash,但支持比较使用sort,时间复杂度为 O(nlogn)t=list(s)try: t.sort()except TypeError: del telse: return [x for i,x in enumerate(t) if not i or t[i]!=t[i-1]]3.前两者都不能的情况下利用in判断,时间复杂度为 O(n**2)u=[]for x in s: if x not in u: u.append(x)return u关于是...
阅读全文
摘要:Python提供了decimal模块用于十进制数学计算,它具有以下特点: 提供十进制数据类型,并且存储为十进制数序列; 有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext().prec=x 来设定,不同的数字可以有不同的精度 浮点:十进制小数点的位置不固定(但位数是固定的) decimal的构建: 可以通过整数、字符串或者元组构...
阅读全文
摘要:在上篇用 os.walk 和 fnmatch 删除指定目录下的pyc文件中提到了fnmatch.translate(如下):>>> import fnmatch>>> pattern='*.py'>>> print fnmatch.translate(pattern).*\.py\Z(?ms)由于之前对python的正则表达式缺乏了解,对结尾中的Z(?ms)不是很了解,在网上也没有查到专门的说明,于是在chinapy上提问,说明如下:(?ms)是什么意思?(?)算是Python正则表达式的修饰符, 可以有很多含义, 在这里?
阅读全文
摘要:在提交版本库的时候需要清除工作目录下的pyc文件,在《python cookbook》2.16节中提供了一种遍历目录树并找出指定文件的方法,可以利用这个清除工作目录下的pyc文件。我做了简单的注释,并在pattern的调用中加入了strip方法以去除其两端的空格,来防止patterns字符串在以分号分割的同时因存在空格而无法匹配的情况。遍历目录树#!/user/bin/python# -*- coding: utf-8 -*-# Filename: allfile.py# Date:2011-03-26import osimport fnmatchdef all_file(root, pat.
阅读全文
摘要:生成器是python中一个非常酷的特性,python2.2中引入后在2.3变成了标准的一部分。它能够让你在许多情况下以一种优雅而又更低内存消耗的方式简化无界(无限)序列相关的操作。生成器是可以当做iterator使用的特殊函数,它功能的实现依赖于关键字yield,下面是它如何运作一个简单的演示:>>>def spam(): yield"first" yield"second" yield"third" >>> spam<function spam at 0x011F32B0>>&g
阅读全文
摘要:Python社区有句俗语: “python自己带着电池”,别自己写计时框架。Python2.3 具备一个叫做timeit的完美计时工具可以测量python代码的运行时间。timeit 模块timeit模块定义了接受两个参数的Timer类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给Timer的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲,timeit构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。一旦有了Timer对象,最简单的事就是调用timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗
阅读全文
摘要:优雅、清晰和务实都是python的核心价值观,如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新的列表时可以使用列表解析( List comprehensions)和生成表达式,通过这两个操作,我们可以看到这三个观点是如何在python中和谐统一起来的。列表解析在需要改变列表而不是需要新建某列表时,可以使用列表解析。列表解析表达式为:[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 第一种语法:首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到it
阅读全文
摘要:接上篇对time模块的基本介绍,在论坛上看到有人对相关问题的求助,诸如python 如何将时间“Fri Aug 13 14:05:20 2010”转换成20100813140520格式自己利用localtime上手实践了一下>>>import time>>> time.localtime()time.struct_time(tm_year=2011, tm_mon=3, tm_mday=8, tm_hour=17, tm_min=36, tm_sec=51, tm_wday=1, tm_yday=67, tm_isdst=0)>>> a=t
阅读全文
摘要:在Django的学习过程中的时间处理过程中遇到了strftime函数,于是结合《python cookbook》和python docs 对time模块中常用的一些操作和函数做了一点总结和归纳。time.time()代表了从特定时间点,也被称作纪元(epoch:[英] [ˈi:pɔk][美] [ˈɛpək, ˈiˌpɑk])开始所经历的秒数,是一个看起来不够直观的浮点数,这个时间根据不同的平台有所不同,一般为1970年1月1日午夜。例:>>> import time>>> time.time()1299080804.953>>> print
阅读全文
摘要:python 2.6 之后可以直接使用内置函数进行进制间的转换,例子如下:#10进制转为2进制>>> bin(16)'0b10000'#2进制转为10进制>>> int("111",2)7#16进制到10进制>>> int("0xC4E5D",16)806493>>> int("C4E5D",16)806493#十进制转为八进制>>print("%o" % 8)>>10#16进制到2进制>>&
阅读全文
浙公网安备 33010602011771号