all判断是否有bool值为False

1 print(all(['a','',123]))
2 #False

#any判断是否有bool值为True

1 print(any(['a','','']))
2 # True

zip,拉链,不止拉两个,可以拉多个

 1 l1 = [1,2,3,'ef','rf',6]
 2 l2 = ['ew','d',4]
 3 l3 = ['fsd',23,43,43,23]
 4 print(zip(l1,l2,l3))
 5 for i in zip(l1,l2,l3):
 6     print(i)
 7 # <zip object at 0x05846738>
 8 # (1, 'ew', 'fsd')
 9 # (2, 'd', 23)
10 # (3, 4, 43)

filter函数

筛选数字

 1 def is_odd(x):
 2     return  x % 2 == 1
 3 
 4 ret = filter(is_odd, [1,2,3,4,5,6])        #注意这里仅仅用函数的名字
 5 print(ret)
 6 for i in ret:
 7     print(i)
 8 # <filter object at 0x057D5270>
 9 # 1
10 # 3
11 # 5

筛选字符串

1 def is_str(x):
2     return type(x) == str
3 
4 ret = filter(is_str, [123,'23dwedc','rewqrrr1',12341])
5 for i in ret:
6     print(i)
7 # 23dwedc
8 # rewqrrr1

筛选去除空的

1 def is_none(s):
2     return s and str(s).strip()
3 ret = filter(is_none,[31,'asdf','sdfsad','','    ',[],234])
4 for i in ret:
5     print(i)
6 # 31
7 # asdf
8 # sdfsad
9 # 234

过滤1-100中平方根是整数的数

 1 import math
 2 def is_int(x):
 3     return math.sqrt(x) % 1 == 0
 4 
 5 ret = filter(is_int,range(1,101))
 6 for i in ret:
 7     print(i)
 8 
 9 # 1
10 # 4
11 # 9
12 # 16
13 # 25
14 # 36
15 # 49
16 # 64
17 # 81
18 # 100

map函数

1 ret = map(abs,[1,-4,6,-8])
2 for i in ret:
3     print(i)
4 # 1
5 # 4
6 # 6
7 # 8

sorted:在列表不大和想保留原来的数据顺序的时候用

 1 l = [1, -4, 6, 5, -10]
 2 l.sort()
 3 print(l)
 4 # [-10, -4, 1, 5, 6]
 5 
 6 
 7 l = [1, -4, 6, 5, -10]
 8 l.sort(key = abs)
 9 print(l)
10 # [1, -4, 5, 6, -10]
11 
12 l = [1, -4, 6, 5, -10]
13 print(sorted(l))      #sorted(l,key = abs,reverse=True)
14 print(l)
15 # [-10, -4, 1, 5, 6]
16 # [1, -4, 6, 5, -10]
17 
18 #根据列表内的元素长度来排序
19 l = ['   ', [1,2], 'hello world']
20 new_l  = sorted(l,key=len)        #可以给一些函数
21 print(new_l)
22 # [[1, 2], '   ', 'hello world']

匿名函数

1 def add(x,y):
2     return x + y
3 
4 # 变为匿名函数
5 func = lambda x,y:x+y
6 print(func(44,22))
7 # 66

筛选字典里面值最大的value对应的key

 1 dic = {'key1':2, 'key2':3, 'key3':6}
 2 def func(key):
 3     return dic[key]
 4 
 5 print(max(dic,key=func))
 6 # key3
 7 
 8 dic = {'key1':2, 'key2':3, 'key3':6}
 9 print(max(dic,key=lambda k:dic[k]))
10 # key3

带有key的内置函数:min max filter map sorted 都可已和lambda合用

面试题1:用lambda将(('a'), ('b'))(('c'), ('d'))转变成[{'a':'c'},{'b':'d'}]

1 ret = zip((('a'), ('b')),(('c'), ('d')))
2 print(list(map(lambda tup:{tup[0]:tup[1]},ret)))
3 
4 # [{'a': 'c'}, {'b': 'd'}]

面试题2:给出答案并解释

1 def multipliers():
2     return  [lambda  x:i*x for i in range(4)]
3 print([m(2) for m in multipliers()])
4 
5 # [6, 6, 6, 6]

 

posted on 2018-08-05 23:06  铁子  阅读(157)  评论(0编辑  收藏  举报