目录
一、三元表达式 - if …… else
二、列表生成式 - [… for … in …]
三、字典生成式 - {…:… … for … in …}
3-1 字典生成式用于集合的生成
四、匿名函数 - lambda
4-1 匿名函数和高级函数
4-1-1 max、min + lambda - 指定函数比较的对象
4-1-2 sorted + lambda - 指定函数的排序依据
4-1-3 map + lambda - 自定义映射规则,返回列表
4-1-4 filter + lambda - 自定义过滤规则,返回列表
4-1-5 reduce + lambda - 自定义合并
五、生成器表达式 - (… for … in …)
一、三元表达式 - if …… else
- res = 条件成立返回的值 if 条件 else 条件不成立返回的值
- 例:res='成功' if name == '123' else '失败'
二、列表生成式 - [… for … in …]
[循环取出来的值进行运算 for 循环取出的变量 in 列表名]
[循环取出来满足if判断的值进行运算 for 循环取出的变量 in 列表名 if 判断]
语法:
[ expression for item1 in iterable1 if condition1 for item2 in iterable2 if condition2 ... for itemN in iterableN if conditionN ] ''' 类似于 res=[] for item1 in iterable1: if condition1: for item2 in iterable2: if condition2 ... for itemN in iterableN: if conditionN: res.append(expression) ''' names = ['a','b','c'] l=[name + '_123' for name in names] print(l) # ['a_123','b_123','c_123'] l = ['a', 'b', 'c'] # 取出列表的值和索引 for index in enumerate(l): print(index) # (0, 'a')
三、字典生成式 -{…:… … for … in …}
keys = ['name','age','sex'] vals = ['a','v','c'] dic = {k:vals[i] for i,k in enumerate(keys) if i >0} print(dic) # {i:i for i in range(10)}
3-1 字典生成式用于集合的生成
{i for i in range(10)} # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} {i for i in 'hello'} # {'l', 'e', 'o', 'h'}
四、匿名函数 - lambda
lambda x,y,z=1:x+y+z
lambda 参数名们 : 表达式 <-----表达式的结果作为返回值
4-1 匿名函数和高级函数
4-1-1 max、min + lambda - 指定函数比较的对象
salaries={'n1':3000,'n2':100000000,'n3':10000,'n4':2000} # 注意!!max和min函数对字典的比较是一般情况是key max(salaries) min(salaries) # 通过max函数的key参数,改变max函数的比较依据 # max函数会for循环出一个值,值会被传给key指定的函数,调用key指定的函数,拿到返回值作为依据 # 第一个值是被max循环的对象 a = max(salaries,key=lambda k :salaries[k]) b = min(salaries,key=lambda k :salaries[k]) print(a) print(b)
4-1-2 sorted + lambda - 指定函数的排序依据
nums = [1,4,25,6,7,99] print(sorted(nums)) # 默认升序 print(sorted(nums,reverse= True)) # 降序 # 对字典进行排序,key 为指定依赖 res = sorted(salaries,key= lambda name:salaries[name]) print(res)
4-1-3 map + lambda - 自定义映射规则,返回列表
# map :把一个列表按照自定义映射规则映射成一个新的列表 names = ['a', 'b', 'c'] res = map(lambda name: name + '123', names) print(res) #
4-1-4 filter + lambda - 自定义过滤规则,返回列表
# filter :从一个列表中过滤出,符合过滤规则的值形成新的列表 # 相当于for循环取出元素,传给匿名函数,讲调用匿名函数返回值为true的元素留下 names = ['a12', 'b', 'c12', 'd'] res = filter(lambda name: name.endswith('12'), names) print(res) #
print(list(res)) # ['a12', 'c12'] # 同上 res1 = [name for name in names if name.endswith('12')] print(res1) # ['a12', 'c12'] print(list(res1)) # ['a12', 'c12'] 4-1-5 reduce + lambda - 自定义合并
# reduce :把多个值合并成一个结果 # reduce(lambda 接受后面两个的值进行运算,循环对象的值,合并参数) from functools import reduce li = ['a12', 'b', 'c12', 'd'] # 'A'是合并参数,li 进行循环取出列表中的值,两个值给匿名函数作为参数传入 # 最后取出来的是一个合并的字符串 res = reduce(lambda x, y: x + y, li, 'A') print(res) # Aa12bc12d # 进行叠加运算 res = reduce(lambda x, y: x + y, range(1, 101)) print(res) # 5050
五、生成器表达式 - (… for … in …)
# 使用()生成生成器,用于迭代;注意!!值仅可消费一次! g = ((i+2) for i in range(2,27)) print(g) #
at 0x00000227BA0EEF10> print(next(g)) # 4 print(next(g)) # 5 # 可以使用在函数调用中,且省略一对小括号 sum(i ** 2 for i in range(10))