snake_l 发表于 2017-5-1 09:52:11

python 快捷函数使用

http://blog.csdn.net/iloveppp123/article/details/6613012
1,for (d,x) in dict.items():
   print "key:"+d+",value:"+str(x)
2,for d,x in dict.items():
   print "key:"+d+",value:"+str(x)

list -> dict 转换
names = ['n1','n2','n3']
values =
nvs = zip(names,values)
nvDict = dict( (name,value) for name,value in nvs)



1.lambda lambda其实就是一条语句,lambda(x):body。x是lambda函数的参数,参数可以有任意多个(包括可选参数);body是函数体,只能是一个表达式,并且直接返回该表达式的值。
>>>f=lambda x:x+1
>>>f(2)
3
>>>(lambda x,y:x+y)(2,3)
5

   2.filter filter(func, list)接受两个参数:一个函数func和一个列表list,返回一个列表。函数func只能有一个参数。filter的功能:列表中所有元素作为参数传递给函数,返回可以另func返回真的元素的列表
>>>l=['abc','acd','1245','ddad','aaa']
>>>func(s)
... return s.startswith('a')
>>>filter(func, l)
['abc','acd','aaa']
filter为过滤list,并返回list,绑定的函数为一个返回bool值的函数
filter(lambda item:item>2,)
>>>

   def fun(x):
             return x>2 and x<6
      list=
      filter(fun,list)
   >>>

    3.zipzip函数接受任意多个序列作为参数,将所有序列按相同的索引组合成一个元素是各个序列合并成的tuple的新序列,新的序列的长度以参数中最短的序列为准。另外(*)操作符与zip函数配合可以实现与zip相反的功能,即将合并的序列拆成多个tuple
>>>x=,y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b'),(3,'c')]
>>>zip(*zip(x,y))
[(1,2,3),('a','b','c')]

            
      
   4.map为操作list,返回list,绑定的函数为修改list中每一个值的函数
   >>> list=
   >>> map(lambda x : x*2,list)
   >>>

   5.reduce为逐次操作list里的每项,接收的参数为 2个,最后返回的为一个结果
   >>>def myadd(x,y):   
   >>>               return x+y
   >>>   sum=reduce(myadd,(1,2,3))
   >>> 6
========================
除了直接相加(生成新的list),还有两种方法(修改其中一个list):
用list的extend方法,L1.extend(L2),该方法将参数L2的全部元素添加到L1的尾部,例如:
>>> L1 =
>>> L2 =
>>> L1.extend(L2)
>>> L1

用切片(slice)操作,L1 = L2和上面的方法等价,例如:
>>> L1 =
>>> L2 =
>>> L1 = L2
>>>
>>> L1


但切片方法用起来更灵活,可以插入到头部,或其他任意部位,例如:
加到开头:
>>> L1 =
>>> L2 =
>>> L1 = L2
>>> L1

加到中间:
>>> L1 =
>>> L2 =
>>>
>>> L1 = L2
>>> L1
页: [1]
查看完整版本: python 快捷函数使用