@guoxs
2016-03-06T00:17:15.000000Z
字数 6649
阅读 2963
python
python是一种解释型、面向对象,动态数据类型的高级程序语言。
//精度高,执行时间长from decimal import Decimal as D
>>> type(a)<type 'int'>>>> a = "gh">>> type(a)<type 'str'>>>> a=[1,2,3,4]>>> dir(a)['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']>>> a.count(3)1>>> a = "dfgfht">>> a.count("d")1>>> a.__class__<type 'str'>>>> a.__doc__"str(object='') -> string\n\nReturn a nice string representation of the object.\nIf the argument is a string, the return value is the same object.">>> a = 3.4>>> type(a)<type 'float'>>>> 0.3*30.8999999999999999>>> print(0.3*3)0.9>>> 0.3/30.09999999999999999>>> 10/33>>> 10.0/33.3333333333333335>>> from decimal import Decimal as D>>> D(0.3)*D(0.9)Decimal('0.2699999999999999966693309261')
$ python -mtimeit -s "from decimal import Decimal as D" "D('1.2')+D('3.4')"10000 loops, best of 3: 28.5 usec per loop$ python -mtimeit -s "from decimal import Decimal as D" "1.2+3.4"100000000 loops, best of 3: 0.0172 usec per loop$ python -mtimeit -s "from decimal import Decimal as D" "float('1.2')+float('3.4')"1000000 loops, best of 3: 0.494 usec per loop
import math//πmath.pi//平方根math.sqrt()//对数math.log10()//x^ymath.pow(x,y)//!xmath.factorial(x)import random//产生一个[0,1]的浮点数random.random()//从列表里等概率随机选择一个random.choice([1,2,3,4])//a-b之间整数随机取一个random.randint(a,b)//返回a~b之间均匀分布的随机数,浮点数random.uniform(a,b)//高斯分布,(均值,方差)random.gauss(mu,lamda)
>>> import math>>> math.factorial(5)120>>> math.pi3.141592653589793>>> dir(math)['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']>>> help(math)……
numpy
scipy
>>> s = "use python do something">>> s[1]'s'>>> s[-1]'g'>>> s[1:3]'se'>>> s[1:6:2] //[start,stop,step]'s y'>>> s[1:]'se python do something'>>> s[:-1]'use python do somethin'>>> s[:]'use python do something'
常用方法集合
>>> "let us" + s,s*2('let ususe python do something', 'use python do somethinguse python do something')>>> s.upper()'USE PYTHON DO SOMETHING'>>> s.find("pa")-1>>> s.replace("python","java")'use java do something'>>> print "%s like %s" %("we","python")we like python>>> a = s.split(" ")>>> a['use', 'python', 'do', 'something']>>> b = ", ".join(a)>>> b'use, python, do, something'>>> s[0:4]*5'use use use use use '>>> s = " life is short, we use python! ">>> a = s.split(",")>>> a[1]' we use python! '>>> a[1].strip()'we use python!'
//转义>>> s="C:\newpython">>> print sC:ewpython>>> len(s)11>>> s = r"C:\newpython">>> print sC:\newpython
Regular expression
编译选项
import retext = 'c++ python2 python3 perl ruby lua java javascript php4 php5 c'#match,search,findall,split,subre.match(r'java',text) #none(第一个不是“java”)re.search(r'java',text) #<_sre.SRE_Match object at 0x00000000031046B0>re.match(r'c++',text) #errorre.match(r'c\+\+',text) #<_sre.SRE_Match object at 0x00000000031941D0>print re.findall(r'python',text) #['python', 'python']print re.split(r' perl ',text) #['c++ python2 python3', 'ruby lua java javascript php4 php5 c']print re.sub(r'ruby','fortran',text) #c++ python2 python3 perl fortran lua java javascript php4 php5 c# ^ start# $ end# . except \nprint re.findall(r'^c..',text) #['c++']print re.findall(r'c+',text) #['c', 'c', 'c']print re.findall(r'c\++',text) #['c++']print re.findall(r'c$',text) #['c']# + 1-inf# * 0-inf# ? 0-1,# [] or# {} repeat# [^] notprint re.findall(r'p+',text)#['p', 'p', 'p', 'p', 'p', 'p', 'p', 'p']print re.findall(r'p[a-zA-Z]+',text) #{1,}#['python', 'python', 'perl', 'pt', 'php', 'php']print re.findall(r'p[a-zA-Z]*',text) #{0,}#['python', 'python', 'perl', 'pt', 'php', 'php']print re.findall(r'p[a-zA-Z]?',text) #{0,1}#['py', 'py', 'pe', 'pt', 'ph', 'p', 'ph', 'p']print re.findall(r'p[a-zA-Z0-9]{3,}',text) #{,1}#['python2', 'python3', 'perl', 'php4', 'php5']print re.findall(r'c[a-zA-Z]*',text) #{,inf}#['c', 'cript', 'c']print re.findall(r'c[^a-zA-Z]*',text) #{,inf}#['c++ ', 'c', 'c']# | orprint re.findall(r'[pj][a-zA-Z]+',text) #{,inf}#['python', 'python', 'perl', 'java', 'javascript', 'php', 'php']# |重写上面的patternprint re.findall(r'p[^0-9]+|j[a-zA-Z]+',text)#['python', 'python', 'perl ruby lua java javascript php', 'php']print re.findall(r'p[^0-9 ]+|j[a-zA-Z]+',text)#['python', 'python', 'perl', 'java', 'javascript', 'php', 'php']# \w [a-zA-Z0-9_], \W# \d [0-9], \D# \s [ \t\n\r\f\v], \Sprint re.findall(r'p\w+',text) #['python2', 'python3', 'perl', 'pt', 'php4', 'php5']print re.findall(r'p\w+\d',text) #['python2', 'python3', 'php4', 'php5']print re.findall(r'p\w+[0-9]',text) #['python2', 'python3', 'php4', 'php5']print re.findall(r'p\w{5,9}',text) #['python2', 'python3']# \b word boundary# \B not \b# \A input start, ^# \Z input end, $print re.findall(r'\bp[^0-9]',text) #['py', 'py', 'pe', 'ph', 'ph']print re.findall(r'p[^0-9]\b',text) #['pt']# *? 0~inf non-greedy# +? 1~inf non-greedyprint re.findall(r'p[a-z]*',text) #['python', 'python', 'perl', 'pt', 'php', 'php']print re.findall(r'p[a-z]*?',text) #['p', 'p', 'p', 'p', 'p', 'p', 'p', 'p']print re.findall(r'p[a-z]+\b',text) #['perl', 'pt']print re.findall(r'p[a-z]+?\b',text) #['perl', 'pt']# () group# (?P<name>pattern)a=re.search(r'(p[a-zA-Z]+)([0-9])','python2',re.X)print a.group(1) #pythonprint a.group(2) #2a=re.search(r'(?P<name>p[a-zA-Z]+)(?P<version>[0-9])','python2')print a.group('name') #pythonprint a.group('version') #2print a.groupdict() #{'version': '2', 'name': 'python'}pattern = re.compile(r'(?P<name>p[a-zA-Z]+)(?P<version>[0-9])')results = pattern.search('python2')print results.groupdict() #{'version': '2', 'name': 'python'}results = pattern.search('python3')print results.groupdict() #{'version': '3', 'name': 'python'}results = pattern.search('php4')print results.groupdict() #{'version': '4', 'name': 'php'}#########################################for t in text.split(' '):results = pattern.search(t)if results:print results.groupdict()#{'version': '2', 'name': 'python'}#{'version': '3', 'name': 'python'}#{'version': '4', 'name': 'php'}#{'version': '5', 'name': 'php'}###########################################a = re.compile(r"""\d + # 整数部分\. # 小数点\d * # 小数部分""", re.X)b = re.compile(r"\d+\.\d*")