高阶函数:有函数作为参数 或 将函数作为返回值。
1. 效果图:
2.代码
# 创建一个列表 list_one = [1,2,3,4,5,6,7,8,9,10] def fn(func , lst) : ''' fn()函数可以将指定列表中的所有偶数获取出来,并保存到一个新列表中返回 参数: lst:要进行筛选的列表 ''' # 创建一个新列表 new_list = [] # 对列表进行筛选 for n in lst : # 判断n的奇偶 if func(n) : new_list.append(n) # if n > 5 : # new_list.append(n) # 返回新列表 return new_list print(fn(fn2 , list_one)) # [2, 4, 6, 8, 10] print(fn(fn3 , list_one)) # [6, 7, 8, 9, 10] print(fn(fn4 , list_one)) # [3, 6, 9] # 定义一个函数,用来检查一个任意的数字是否是偶数 def fn2(i) : if i % 2 == 0 : return True return False # 这个函数用来检查指定的数字是否大于5 def fn3(i): if i > 5 : return True return False # 被3整除的数 def fn4(i): return i % 3 == 0 print(3%3==0)
优化上述代码效果图:
优化代码:
# filter() : 从序列中过滤出符合条件的元素,保存到一个新序列中。 不是一个序列。 # 参数: # 1.函数,根据该函数来过滤序列(可迭代的结构) 过滤条件 # 2.需要过滤的序列(可迭代的结构) 过滤序列 # 创建一个列表 list_one = [1,2,3,4,5,6,7,8,9,10] # 被3整除的数 def fn4(i): return i % 3 == 0 r = filter(fn3,list_one) print(r,type(r)) print(list(r))
再次优化:
效果图
# lambdah函数 # 作用: 用来创建简单的函数 # 语法: lambda 参数列表 : 返回值 # 原来的写法: def fn5(a,b): return a + b print(fn5(2,6)) # 现在的写法: print((lambda a,b : a + b)(2,6))
filter() 和 lambda函数结合优化:
效果图:
list_one = [1,2,3,4,5,6,7,8,9,10] r = filter(lambda i : i > 5 , list_one) print(list(r))
map()函数效果图:
对列表list_one中的每个元素进行加 1 。
map()函数代码:
# map()函数 # 作用:对可遍历(迭代)对象中的所有元素做指定的操作,返回新对象 list_one = [1,2,3,4,5,6,7,8,9,10] print("list_one",list_one) r = map(lambda i : i + 1 , list_one) print("r",r,list(r))
sort()方法 效果图一: 1.字符串的长度 比较 2.字母的Unicode值比较
语法: 列表名.sort()
sort()方法 代码一:
# sort()方法 会改变列表 # 作用:对列表中的元素排序 , 默认比较大小 ,字母比较Unicode大小 # sort()可以接收一个关键字参数, key # key需要一个函数作为参数,当设置函数作为参数 # 每次会以列表中的一个元素作为参数来调用函数,并且使用函数的返回值来比较元素的大小 list_one = ['ab','ba','c','dc'] # 检查下会不会改变list_one列表 a = list_one.sort(key=len) print(list_one) print(a)
sort()方法 效果图二: 值比较
sort()方法 代码二:
list_one = [2,6,'3',7,'8'] list_one.sort(key=int) print(list_one)
sorted()函数 语法: sorted(序列名,key=排序方式)
效果图:
代码:
# sorted()函数 不会改变原对象,返回一个新对象 # 作用: 对任意的序列进行排序 # 语法: sorted(序列名, key = 排序方式) #print(help(sorted)) list_one = [3,5,'8',1,'2'] print('排序前:',list_one) a = sorted(list_one,key=int) print('排序后:',a) print('\n') list_two = "36742884" print('排序前:',list_two) b = sorted(list_two,key=int) print('排序后:',b)