python
韩王-信
无成有终含章可贞
展开
-
模拟一个先进先出的队列
def mainq(num): global initq# print initq cs=initq[:-1] initq[0]=num initq[1:]=cs[:] print initqinitq=[-1]*10num=input("please enter number:")while num!=-1: mainq(num)原创 2013-08-30 09:00:04 · 775 阅读 · 0 评论 -
异常
[root@localhost ~]# cat test.pytry: x=10 y=0 z=x/yexcept (Exception) as e: print e[root@localhost ~]# python test.pyinteger division or modulo by zero同样的也可以以以下的方式顺便看下finally:原创 2013-09-02 09:32:00 · 525 阅读 · 0 评论 -
循环
1. for 和while 循环2. 遍历map中的元素[root@localhost ~]# cat map.pyme={"name":"hongrao","age":"28"}for key in me: print "key is:", key,"value:",me[key][root@localhost ~]# python map.pykey is:原创 2013-09-02 09:32:04 · 540 阅读 · 0 评论 -
python main 函数
模拟一个类似java的main函数:1. 可以看出如果单独执行时先进入main[root@hadoop Desktop]# cat hongrao.py#! /usr/bin/python# this is test main function by hongraodef hongrao(): name="weihongrao" prin原创 2013-09-25 22:53:05 · 772 阅读 · 0 评论 -
python insert 和分片赋值
实例序列:>>> a[5, 7, 45, 2, 3, 3, 2, 3, 5]分片包含上标的值但是不包含下标的值,以下的出的是7而不是7,45>>> a[1:2][7]如果上标和下标相同则会取出空序列>>> a[2:2][]利用这样的特性可以用分片赋值来取代insert的方法>>> a[5, 7, 46, 45, 2, 3, 3,原创 2013-10-18 20:07:28 · 1677 阅读 · 0 评论 -
python pop 和remove
python 中pop和remove都是原位操作,不同的是pop是按位进行删除,而remove是按照值来删除,而且remove不是吧含有该值的都删除而是只是删除第一次出现的值,另一个不同的是pop会返回被删除的值,而remove不会返回值原创 2013-10-18 20:16:19 · 2404 阅读 · 0 评论 -
python 字典元素判定方法
>>> a{'lname': 'rao', 'mname': 'hong', 'fname': 'wei'}取出字典的元素通常有两种方法:get和类似数map的方法>>> a.get('fname')'wei'>>> a['mname']'hong'>>>但是当key不存在与字典中的时候这两种方法的表现是不一样的>>> a.get('name')原创 2013-10-18 23:14:07 · 1442 阅读 · 0 评论 -
python 打印 tab
在python用如果想要打印出tab本想可以用,print 'wei'+' '+'rao'其中中间是手动输入的tab键不是空格,但是打印出来的结果变成了3连续个空格。于是采用转义print 'wei'+' \t'+'rao'原创 2013-10-22 12:05:07 · 5371 阅读 · 0 评论 -
python MR 中reduce迭代
在java版本中,maprduce框架会自动把相同的key的value值传给reduce函数进行迭代,但是在stream中,MR框架虽然也对key进行排序,但是并不能够把相同key的value传给reduce函数进行迭代,必须用代码进行控制这样的迭代,这在对数据进行分段sum,account,average等汇总计算的时候是必须的,以python为例:原始数据:line product g原创 2013-11-20 08:51:33 · 1427 阅读 · 0 评论 -
streaming mr
在以前的一篇关于python版MR实例的文章中,只是简单走了一下流程,这次主要是解决上次遗留的key,partition,sort的问题。以进一步理解hadoop streaming,也尝试mapper使用python而reducer使用bash的结合方式1. 省略本地测试这个环节,可参考以前的那篇文章,HDFS上的测试数据位:[root@hadoop Desktop]# hadoop原创 2013-11-20 08:52:21 · 1044 阅读 · 0 评论 -
python null 判定
>>> a={'type':'Air'}>>> if a.get('hotel')==None : print 'no hotel type'no hotel type原创 2013-11-20 10:50:16 · 4024 阅读 · 0 评论 -
python 列表表达式和生成器表达式
列表表达式:>>> a=[1,2,2,3,50]>>> b=[i+1 for i in a]>>> print(b)[2, 3, 3, 4, 51]>>> b=[i+1 for i in a if i>=5]>>> print(b)[51]列表表达式返回一个完整的列表生成器表达式:>>> c=(i+2 for i in a )>>> pr原创 2013-11-21 10:49:08 · 1214 阅读 · 0 评论 -
python lambda用法
lambda 表达式相当于隐式的函数,简单的用法:>>> a=lambda s:s*s>>> print a(4)16其中s相当与参数,s*s相当于返回值lambda在groupby中的用法:from itertools import*a=[{'a':12},{'a':14},{'a':12},{'a':14},{'a':32},{'a':32}原创 2013-11-21 23:21:35 · 2036 阅读 · 0 评论 -
python 使用yield
使用yield和普通函数return最大的区别就是return在处理全部数据后把最终结果返回到调用者,调用完成之后就无法返回去控制函数,但是yield是把每一个处理结果返回给调用者处理,然后再回到函数处理下一项,知道函数处理完成每一项为止,yield返回的是一个迭代器,对于处理长度很长的列表对内存的效率是很有帮助的,尤其在处理无限级的序列的时候from itertools impo原创 2013-11-21 23:33:37 · 890 阅读 · 0 评论 -
Python: 解释‘yield’和‘Generators(生成器)’
原文:http://www.oschina.net/translate/improve-your-python-yield-and-generators-explained协程与子例程 我们调用一个普通的Python函数时,一般是从函数的第一行代码开始执行,结束于return语句、异常或者函数结束(可以看作隐式的返回None)。一旦函数将控制权交还给调用者,就意味着全部结束。函数中转载 2013-11-21 23:37:16 · 813 阅读 · 0 评论 -
python sorted 多个字段排序
>>> a=[[12,34],[23,56],[47,12],[23,90]]##先按照第二个元素再按照第一个元素排序>>> b=sorted(a,key=lambda x:(x[1],x[0]))>>> print(b)[[47, 12], [12, 34], [23, 56], [23, 90]]##倒转一下>>> c=sorted(a,key=lambda x原创 2013-11-22 08:52:25 · 22338 阅读 · 5 评论 -
MR python joiner
继承http://blog.csdn.net/weihongrao/article/details/16826763 把上次得出的数据在和group维度表进行关联得到group名称mapper:joinm#!/usr/bin/pythonimport sysclass mapper: def map(self): for line in原创 2013-11-20 16:40:58 · 982 阅读 · 0 评论 -
python 判断变量类型
a='weihongrao'if not isinstance(a,float): print('not')else: print('yes')if not isinstance(a,(float,int)): print(a+' is not type eror')原创 2013-11-25 14:26:22 · 898 阅读 · 0 评论 -
文件操作
转自:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.htmlpython中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:转载 2013-09-02 09:32:03 · 658 阅读 · 0 评论 -
文件写入覆盖和追加
>>> f=open("weihongrao",'w')>>> f.write("hello ")>>> f.write("weihongrao")>>> f.close()>>> f=open("weihongrao")>>> f.read()'hello weihongrao'>>> f.close()>>> f=open("weihongrao","w")原创 2013-09-01 14:07:14 · 13951 阅读 · 0 评论 -
退出python shell
在windows下,Ctrl+Z 退出在unix下,Ctrl+D 退出.补充:或者quit()原创 2013-08-30 09:03:24 · 1764 阅读 · 0 评论 -
列表和元组
序列的通用操作1. 序列的索引>>> myname="weihongrao">>> myname[0]'w'>>> myname[-1]'o'>>> "this is my name"[3]'s'>>> "this is my name"[-3]'a'>>> "this is my name"[2:-4]'is is my '2. 序列的原创 2013-08-30 09:03:37 · 590 阅读 · 0 评论 -
字符串处理
1. find, 没有找到时返回-1, 不想index 没有找到的时候会报错>>> myname="weihongrao">>> myname.find("hong")3>>> myname.find("o",5)9>>> myname.find("o",5,9)-1>>> myname.find("o",5,10)9>>>由上可见,find中使用范原创 2013-08-30 09:03:42 · 529 阅读 · 0 评论 -
字典,python中的map
python中所谓的字典和其他语言中的map其实是一码事1.基本操作>>> info={"name":"weihograo","tel":"18665832719",'wife':'huajingfen'}>>> len(info)3>>> info["wife"]'huajingfen'>>> "name" in infoTrue看看下面和序列的区别>原创 2013-08-30 09:03:37 · 1476 阅读 · 0 评论 -
字典和序列的带序号遍历
>>> for key,name in names.items(): print(key,name)mname honglname raofname wei>>> names=["wei","hong","rao"]>>> for i,name in enumerate(names): print(i,name)0 wei1 hong2原创 2013-08-30 08:59:45 · 4601 阅读 · 0 评论 -
range()用法
>>> for i in range(5,30,6): print(i) 511172329range(start,end ,step)原创 2013-08-30 08:59:55 · 1142 阅读 · 0 评论 -
选择算法
[leo@hadoop ~]$ cat loop2.pya=[12,324,3423,42,234,756,3214,64,13,234]alen=len(a)print "original a is:",afor x in range(alen): b=a[x-alen:] #print "x is ",x,"b is:",b for j,va in enume原创 2013-08-30 08:59:58 · 664 阅读 · 0 评论 -
python 不同版本之间的print
在比较低的版本中print 作为一个命令所以只需要print “dfsf”就可以但是在高级版本中print已经作为一个函数,所以在使用的时候需要以函数的方式引用print(“fsdfs”)原创 2013-08-30 09:00:13 · 1262 阅读 · 0 评论 -
函数和类的作用域及命名空间
函数 函数的屏蔽问题:1. 当执行一个变量赋值操作之后,只是将变量名称引用到值上,变量和值之间其实是通过一个隐形的map来联系起来的,在程序中也可以通过函数vars()显示这个隐形的map, 如下例>>> myCni="expedia">>> sc=vars()>>> sc["myCni"]'expedia'2. 函数作用域 函数每次调用都会创建一个自己原创 2013-08-30 09:03:49 · 681 阅读 · 0 评论 -
类简述
class namewei: def names(self): ####似乎类中的方法必须要self函数否则报错 print "weihongrao" def names2(self): print "jixianqiuxue" def main(self): self.names() ####调用类中的方法也需要用self.的方式进行否则一样报原创 2013-08-30 09:03:53 · 715 阅读 · 0 评论 -
条件判断
以下的返回值被视为假,其他都为真,False None 0 "" () {} []1. [root@localhost ~]# cat fi.pyname="hongrao"if name=="hongrao": print "this is hongrao"else: print "this is not hongrao"[root@localhost原创 2013-08-31 17:01:46 · 555 阅读 · 0 评论 -
模块
1. 将自己的文件编程可以导入的模块 [leo@hadoop python]$ cat cl.py ######这个是我的文件cl.py 主要的应用是定义了getmyname的函数class namewei: def names(self): print "weihongrao" def names2(self): print "jixianqiuxue"原创 2013-09-01 14:06:18 · 603 阅读 · 0 评论 -
time 和datetime
1.time >>> import time>>> time.time()#####返回的是时间戳1376899374.892674>>> time.localtime()###将时间戳转换为timestructtime.struct_time(tm_year=2013, tm_mon=8, tm_mday=19, tm_hour=4, tm_min=3, tm_sec=6,原创 2013-09-01 14:06:11 · 3919 阅读 · 0 评论 -
数字和字符串之间的转换
1. 字符串转换成数字 和其他的语言不一样字符串和数字想加时,python不会自动转换数字类型成字符串素以需要手工进行转换>>> print("weihongrao's age is :"+str(27))weihongrao's age is :27>>> print("age:"+27)Traceback (most recent call last): Fil原创 2013-09-01 14:07:35 · 1487 阅读 · 0 评论 -
原始字符串
>>> print r'c:\you\you''\\'c:\you\you\原创 2013-08-31 17:01:45 · 787 阅读 · 0 评论 -
代码块
其他的语言中通常用begin end; 或者{ } 来表示代码块,但是在python中以:表示代码块的开始,同样的代码块拥有同样的缩进,遇到缩进不一样的时候意味着代码块的结束原创 2013-08-31 17:01:42 · 546 阅读 · 0 评论 -
冒泡算法
网上还有很多关于冒泡算法的列子,在这里我主要利用的python中的分片及其分片赋值的原理来完成,^_^_^_^_^_^ ,在下一文章中我将尝试选择排序[leo@hadoop ~]$ cat loop.pya=[3,4,1,6,8,2,13,3,23,25,78]ax=a[:]alen=len(a)print "a is ",afor x in range(alen):原创 2013-09-01 14:07:28 · 586 阅读 · 0 评论 -
python 函数参数 调用的常见方法
##unpacked list or tuple for parametersa=[1,5,3]def getg(test,*value): print(test) for i in value: print(i)getg('go from here',*a)##arbitrary argument list原创 2015-02-14 13:49:17 · 792 阅读 · 0 评论