语法: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