Python 的lambda表达式的一些小细节

jopen 9年前


# coding=UTF-8      #加百子  g=lambda x,y:x+y  total=0;  for i in range(1,101):      #print i      total=g(total,i)        print total    #即使定义相同的lambda方法他们也不能算是同一个  g1=lambda x,y:x+y  g2=lambda x,y:x+y  print g1  print id(g1)  print g2  print id(g2)    #lambda方法嵌套定义,lambda方法不适用变量引用而直接调用  print (lambda x,y:x+((lambda a:a+1)(y)))(1,2)    #lambda方法定义不可以回车,也就是说像for这种代码不能出现再lambda方法中  #error  # lambda x,y:  #     num=0  #     for i in range(x,y+1)  #         num+=i    #取可迭代的序列参数中所有满足真条件的值  #元组和列表  print filter(None,(1,0,True,False))  print filter(None,[1,0,True,False])  #字典的奇葩结果:返回的是key的列表,并且判断时以第一个符合的元素的类型作为基准  print filter(None,{"a":1,"b":0,"c":True,"d":False})  print filter(None,{1:'s',0:'s',True:'s',False:'s'})  print filter(None,{True:'s',False:'s',1:'s',0:'s'})  print filter(None,{0:'s',1:'s',True:'s',False:'s'})  print filter(None,{False:'s',0:'s',1:'s',True:'s'})  print filter(None,{False:'s',0:'s',1:'s',True:'s',2:'s',1.23:'s','KK':'s',0.00:'s'})  print filter(lambda x:x%2,{1:'s',2:'s',3:'s',4:'s'})  #取反  print filter(lambda x:not x,[1,0,True,False] )  #取奇数和偶数  print filter(lambda x:x%2, [1,2,3,4,5,6,7])  print filter(lambda x:(x+1)%2, [1,2,3,4,5,6,7])  #print filter(lambda [x,y]:(x+y)%2, [[1,2],[3,4],[5,6],[7,1]])error      print map(None,range(10))  print map(lambda x:x*100,range(10))  print map(lambda x:x*100+(x%2)*(-1)+((x+1)%2)*1,range(10))  print map(lambda x:0,range(10))  print map(lambda x:[x-1,x,x+1],range(10))  print map(lambda x:(x-1,x,x+1),range(10))  #元组会变成元素相同的列表  print map(None,(1,2,3,4,5))  #即使返回的列表相同,地址已经不同,也就是两个列表不是同一个  l1 = [1, 2, 3, 4, 5, 6]  l2 = map(None, l1)  print l1,id(l1)  print l2,id(l2)

输出结果如下:(改天有空的时候,我会把输出结果对应者插进去,现在请各位凑合着看吧)

5050  <function <lambda> at 0xb7487bfc>  3074980860  <function <lambda> at 0xb7487f7c>  3074981756  4  (1, True)  [1, True]  ['a', 'c', 'b', 'd']  [1]  [True]  [1]  [1]  [1, 2, 'KK', 1.23]  [1, 3]  [0, False]  [1, 3, 5, 7]  [2, 4, 6]  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  [0, 100, 200, 300, 400, 500, 600, 700, 800, 900]  [1, 99, 201, 299, 401, 499, 601, 699, 801, 899]  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]  [[-1, 0, 1], [0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10]]  [(-1, 0, 1), (0, 1, 2), (1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6), (5, 6, 7), (6, 7, 8), (7, 8, 9), (8, 9, 10)]  [1, 2, 3, 4, 5]  [1, 2, 3, 4, 5, 6] 3074533388  [1, 2, 3, 4, 5, 6] 3074983436