- map
1 #自定义map函数 2 def map_test(func, list): 3 res = [] 4 for item in list: 5 res.append(func(item)) 6 return res 7 8 def add_one(x): 9 return x + 1 10 11 a = [1, 2, 3] 12 print(map_test(add_one, a)) 13 print(map_test(lambda x:x + 1, a)) #终极版本 14 15 #python中的内置函数map(),功能同上 16 print('python的内置函数map()', list(map(lambda x:x + 1, a))) 17 #map(参数1:功能函数(命名函数或者是匿名函数,参数2:可迭代对象(列表,字符串...))) 18 #python2中map()函数处理的结果是一个列表,而python3中处理的结果是一个可迭代对象
- filter
1 #自定义filter函数 2 def filter_test(func, list): 3 res = [] 4 for item in list: 5 if func(item): 6 res.append(item) 7 return res 8 9 def bigger5(x): 10 if x > 5: 11 res = True 12 else: 13 res = False 14 return res 15 16 a = [1, 2, 3, 10, 15, 6] 17 print(filter_test(bigger5, a)) 18 19 #python内置函数filt(),功能同上 20 print(list(filter(bigger5, a))) 21 #filter(参数1:功能函数(命名函数或者是匿名函数,参数2:可迭代对象(列表,字符串...))) 22 #python2中filter()函数处理的结果是一个列表,而python3中处理的结果是一个可迭代对象
- reduce
1 #自定义reduce函数 2 def reduce_test(func, list, init = None): 3 if init is None: 4 res = list.pop(0) 5 else: 6 res = init 7 for item in list: 8 res = func(res, item) 9 return res 10 a = [1, 2, 3] 11 print(reduce_test(lambda x, y:x + y, a)) 12 13 #python内置函数reduce() 14 from functools import reduce 15 a = [1, 2, 3] 16 print(reduce(lambda x, y:x + y , a)) #6 17 print(reduce(lambda x, y:x + y , a, 2)) #8 18 #reduce(参数1:功能函数(命名函数或者是匿名函数),参数2:可迭代对象(列表,字符串...),参数3,初始值(可选参数)) 19 #返回是一个值
①map():对可迭代对象中的每个元素都进行相同的处理,最后返回一个新的可迭代对象,python2中直接返回列表形式
②filter():对可迭代对象中的每个元素进行筛选,最后将符合条件的元素装进一个新的可迭代对象里,python2中直接返回列表形式
③reduce():对可迭代对象中的元素进行一个操作(如所有的值加起来),最后返回新数值
- 其他内置函数
1 # ==========abs==========绝对值 2 print(abs(-1)) # 1 3 4 # ==========all==========可迭代对象的每个元素的布尔操作都是True时返回True,若传入的可迭代对象是空则返回True 5 print(all(['', 1, 's'])) # False 6 7 # ==========any==========可迭代对象的每个元素的布尔操作中有一个是True时就返回True,若传入的可迭代对象是空则返回True 8 print(any(['', 5, '0'])) # Ture 9 10 # ==========bin==========将十进制数转成二进制数 11 print(bin(3)) # 0b11 12 13 # ==========hex==========将十进制数转成十六进制数 14 print(hex(10)) # 0xa 15 16 # ==========oct==========将十进制数转成八进制数 17 print(oct(8)) # 0o10 18 19 # ==========bool==========布尔值操作: 空 0 None 布尔操作为False 20 print(bool([])) # False 21 22 # ==========bytes==========编码 将传入的字符串用某种编码方式转换成二进制 23 print(bytes('陈', encoding='utf-8')) # b'xe9x99x88' 24 print(bytes('陈', encoding='utf-8').decode('utf-8')) # 陈 # 译码 译码与编码应采用一样的 25 26 # ==========chr==========将ASCII码转成对应字符 27 print(chr(97)) # a 28 29 # ==========ord=========将字符转成对应的ASCII码值 30 print(ord('a')) # 97 31 32 # ==========dir==========打印某种对象里面的所有属性 33 print(dir(all)) 34 35 # ==========divmod==========参数1除以参数2 返回一个元组(商,余数) 36 print(divmod(10, 3)) # (3, 1) 37 38 # ==========eval========== 39 dic = {'name': 'chen'} 40 dic_str = str(dic) 41 # ===================================功能1:提取成传入的字符串中的数据类型 42 print(dic_str) # '{'name': 'chen'}' 43 print(type(dic_str)) # <class 'str'> 44 print(eval(dic_str)) # {'name': 'chen'} 45 print(type(eval(dic_str))) # <class 'dict'> 46 # ===================================功能2:计算字符串中的数学运算 47 s = '1 + 2 * 1' 48 print(eval(s)) # 3 49 50 # ==========hash==========hash运算 51 print(hash('chen')) # -1076846465005340399 52 print(hash('chenyuanyuan')) # -8978753568388561982 #hash()---->hash运算 53 54 # ==========help==========函数功能解释 55 print(help(all)) 56 57 # ==========isinstance==========判断某个对象是否是某种数据类型的实例对象 58 print(isinstance('2', str)) # True 59 60 # ==========globals、locals==========全局变量、局部变量 61 name = 'chen' 62 63 64 def test(): 65 age = 18 66 print(globals()) # 打印所有的全局变量,包括name 67 print(locals()) # {'age': 18} #打印所有的局部变量 68 69 70 test() 71 72 # ==========min、max==========最小值、最大值 73 dic = {'chen': 100, 'wang': 200, 'li': 500, 'do': 600} 74 # ============一个可迭代参数 75 print(min(['a01', 'b10', 'c1'])) # a01 遍历出每个元素,比较它们的的第一位的ASCII码值,找到最小后就停止比较 76 # print(min(['a01', 'b10', 'c1', 30])) #报错 不同数据类型无法比较 77 print(min(dic)) # chen 78 print(max(dic)) # wang 79 print(min(dic.values())) # 100 80 print(max(dic.values())) # 600 81 print(max(zip(dic.values(), dic.keys()))) # (600, 'do') #max与zip结合找出value值最大的那一组 82 # ============两个参数 83 print(min(dic, key=lambda k: dic[k])) # chen 84 print(max(dic, key=lambda k: dic[k])) # do 85 86 # ==========zip==========拉链操作,将多个可迭代对象(列表,元组,字符串)对应元素组成一个元组,多余元素自动去掉,返回可迭代对象 87 print(list(zip('abc', 'def', 'ghihhhhh'))) # [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')] 88 print(list(zip(dic.keys(), dic.values()))) # [('chen', 100), ('wang', 200), ('li', 500), ('do', 600)] 89 90 # ==========pow==========参数1的参数2次方,结果对参数3进行取余操作 91 print(pow(2, 3)) # 8 92 print(pow(2, 3, 1)) # 0 93 94 # ==========reversed==========反转可迭代对象中元素的排列顺序,返回迭代器 95 a = [1, 2, 3] 96 print(list(reversed(a))) # [3, 2, 1] 97 98 # ==========round==========四舍五入取整 99 print(round(2.66)) # 3 100 101 # ==========set==========将其他数据类型转换成集合 102 print(set('hello')) # {'h', 'o', 'e', 'l'} 103 104 # ==========slice==========切片:参数1-->起始索引,参数2-->结束索引,参数3-->步长 105 a = 'ehllovihgh' 106 s1 = slice(2, 6, 2) 107 print(s1.start) # 2 108 print(s1.stop) # 6 109 print(s1.step) # 2 110 print(a[s1]) # lo 111 112 # ==========sorted==========排序 113 a = [1, 25, 2, 3] 114 print(sorted(a)) #[1, 2, 3, 25] #不同数据类型任然无法进行排序比较 115 lists = [{'name': 'chen', 'age': 18}, {'name': 'wang', 'age': 25}, {'name': 'li', 'age': 9}] 116 print(sorted(lists, key = lambda dic:dic['age'])) 117 #[{'name': 'li', 'age': 9}, {'name': 'chen', 'age': 18}, {'name': 'wang', 'age': 25}] 118 info = {'liu': 100, 'li': 12200, 'chen': 100000} 119 print(sorted(info.keys())) #['chen', 'li', 'liu'] #比较key值 120 print(sorted(info.values())) #[100, 12200, 100000] #比较value值 121 print(sorted(info, key = lambda key: info[key])) #['liu', 'li', 'chen'] #比较value值,返回key值 122 print(sorted(zip(info.values(), info.keys()))) #[(100, 'liu'), (12200, 'li'), (100000, 'chen')] 123 124 # ==========type==========查看数据类型 125 print(type('ll')) # <class 'str'> 126 127 # ==========sum==========求和 128 print(sum([5, 2, 3])) #10 129 130 # ==========range==========范围 131 for item in range(5): 132 print(item) 133 # 0 134 # 1 135 # 2 136 # 3 137 # 4 138 for item in range(5, 7): 139 print(item) 140 # 5 141 # 6 142 143 # ==========__import__==========引入字符串类型的模块名 144 m = __import__('...') 145 m.函数名()