python中一些巧妙的用法

(一)map

  map(a,b)可以理解为对b中的每一个元素执行a方法

  例如

  list = ["1","2","3","4"]

  则 map(int, list)表示将list中的元素转为int

  

 

  如 a = [1,2,3] b = [11,12,13] c = [21,22,23]

  def add(x1,x2,x3):

    return x1+x2+x3

  map(add, a, b, c)

  

 

 (二) join

  str.join(sequence)
  sequence表示连接字符

  如
  str = "-"
  sequence = "abdc"

  str.join("-")

  

 

  list转string
  

 

  string转list
   

 (三)eval

  将字符串当成语句来执行

  

 (四)过滤函数filter和二元操作函数reduce

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>>
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>>
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>>
>>> print reduce(lambda x, y: x + y, foo)
139

  python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。

  对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。

  可以看作是过滤函数。

(五)匿名函数lambda

  lambda 定义了一个匿名函数

  lambda 并不会带来程序运行效率的提高,只会使代码更简洁。

  如果可以使用for...in...if来完成的,坚决不用lambda。

  如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

posted @ 2017-03-25 20:21  kuqs(奇小东)  阅读(345)  评论(0)    收藏  举报