三元表达式&列表生成式&生成器表达式&匿名函数&内置函数

三元表达式

三元表达式是python为我们提供的一种简化代码

语法:res = 条件成立时返回的值 if 条件 else 条件不成立时返回的值

比较用法;
1.复杂的小白方式
def max(x,y):
if x>y:
       return x
   else:
       return y
res = max(1,2)
print(res)
2.三元精英级表达式
x=1
y=2
res = x if x>y else y
print(res)

 

列表生成式

列表生成式是python为我们提供的一种简化代码的解决方案,用来快速生成列表

可以一行实现生成列表:

语法:list= [取出的每一个值/任意值 for 可迭代对象中取出的每一个值 in 可迭代对象]

[line for line in range(1,6)]

优点:可以依赖与索引取值,取值方便

缺点:浪费资源

普通人生成列表:
new_liat = []
for line in range(1,101):
   new_list.append(line)
print(new_list)
列表生成式生成列表:
list = ['鸡蛋%s' %i for i in range(10)]

生成器表达式

创建一个生成器对象有两种方式,一种是调用yield关键字函数,另一种就是生成器表达式,与列表生成式的语法一样,只需将[]换成()即

(line for line in range(1,6))

优点:节省资源

缺点:取值不方便

生成一个有100个值的生成器
g = (line for line in range(1,101))
print(g)
for i in g:
  n.append(i)
print(n)

匿名函数

没有名字的函数:lambda: 左边是参数,右边是返回值

lamdba :

正常函数调用是 函数名 + ()

匿名函数需要一次性使用,匿名函数单独使用毫无意义,必须配合内置函数一起使用才有意义

res = lambda x,y,z:x+y+z
print(res)
等同
def func(x,y,z):
   return x + y +z
等同
y,z:x+y+z
res = func(1,2,3)

内置函数

python中内部提供的内置方法

max()、min、sorted、map、filter

tomsalaries={'siry':3000,'tom':700,'lili':10000,'jack':2000}
print(max(salaries))#按名字排序最大的那个人
print(max(salaries,key=lambda k:salaries[k]))#工资最高的那个人
print(min(salaries)) #按名字排序最小的那个人
print(min(salaries,key=lambda k:salaries[k])) #按工资排序工资最少的那个人

排序:

 

 

 

 

sorted:从小到大排序默认升序,reverse:反转,默认是flase

print(sorted(salaries,key=lambda k:salaries[k],reverse=True))

map:映射,将可迭代对象中的每一个值进行修改,然后映射一个map对象中,可以将map对象转成元祖或列表(只能转一次)

name_list = ['赵帅兵','胡晨阳','高留柱','刘浩']
map_name = map(lambda name:name +'白马会所的少爷' if name != '刘浩' else name +'白马会所老板',name_list)
print(map_name)
# print(list(map_name)) #相当于从迭代器中取值只能取一次故转换操作也只能转一次
print(tuple(map_name))

reduce:每次从可迭代对象中获取两个值进行合并

form functools import reduce

初始值:执行reduce函数时,都是从初始值开始合并,初始值默认为0

reduce(lamdba x,y:x+y,rangge(1,101),0)

计算1-100的和基础方式

init  = 0
for line in range(1, 101):
   init += line
print(init)  # 5050

filter:过滤

name_list = ['胡晨阳_DSB','高留柱_DSB','赵帅兵_DSB','刘浩']
new_name = filter(lambda name:name.endswith('_DSB'),name_list)
print(new_name)
print(list(new_name))

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/cyfdtz/p/11892284.html