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]