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



浙公网安备 33010602011771号