今日内容

  • 三元表达式

  • 各种生成式

  • 匿名函数

  • 常见的内置函数

三元表达式

使用场景:二选一的时候 推荐使用三元表达式
例:编写一个求两个数大小的函数
def index(a,b):
if a > b:
return a
else:
return b
三元表达式:
值1 if 条件 else 值2
条件如果成立则使用值1(if前面的数据)
条件如果不成立则使用值2(else后面的数据)
例:
res = a if a > b else b

各种生成器

1.列表生成式
name_list = ['faker','duker','ambition']
需求:将列表中每个元素后加上_NB
# 先创建一个空的列表用于存储修改之后的数据
new_list = []
# for循环列表获取每一个元素
for name in name_list:
# 字符串末位拼接_NB
res = name + '_NB'
# 添加到新的列表中
new_list.append(res)
print(new_list)

列表生成式:该技术可以简化代码
res = [name + '_NB' for name in name_list]
print(res)

列表生成式复杂用法:具备筛选能力
res = [name + '_NB' for name in name_list if name =='faker']
print(res)
'''列表生成式中值允许出现for和if 不能出现else 因为会产生歧义(for和if都能结合else)'''

2.字典生成式
l1 = ['name','age','salary']
l2 = ['faker',23,9999999]
需求:将上述两个列表分别制作成字典的键值
new_dict = {}
for i in range(len(l1))
new_dict[l1[i]] = l2[i]
print(new_dict)

使用字典生成式:
res = {l1[i]: l2[i] for i in range(len(l1))}
print(res) # {'name':'faker','age':23,'salary':9999999}
res = {l1[i]: l2[i] for i in range(len(l1)) if i == 0}
print(res) #{'faker'}

匿名函数

匿名函数的意思就是没有函数
匿名函数需要结合其他函数一起使用
#定义匿名函数
关键字:lambda 形参:返回值 #lambda x:x+2
max:统计最大值
info = {
  'feker': 899898,
  'ambition' : 74747,
  'duker' : 77777,
  'uzi' : 14
}
# 求数值最高的人
#print(max(info)) # uzi
'''
max底层可以看成是for循环依次比较 针对字典默认只能获取到k
获取到k之后如果是字符串的英文字母 则会按照ASCII码表转成数字比较
  A~Z:65-90
  a~z:97-122
'''
def index(k):
  return info[k]
# print(max(info,key = index())) # key对应的函数返回什么 max就以什么做比较的依据
#比较的是v 返回的是k key相当与是可以更改比较规则的参数

print(max(info,key=lambda key:info[key])) # faker

匿名函数的优点:
1.不用取名称
2.可以直接在使用的地方定义,如果需要修改,直接找到修改即可,方便以后代码的维护工作
3.语法结构简单,不用使用def 函数名(参数名):这种方式定义,直接使用lambda 参数:返回值 定义即可

常见重要内置函数

1.map映射
l1 = [1,2,3,4]
需求:列表每个元素加1
方式1:列表生成式: res = [i + 10,for i in l1]
方式2:
l1 = [1,2,3,4]
def index(n):
return n+1
res = map(index,l1)
print(list(res)) # 迭代器
res = map(lambda x: x +1,l1)
print(list(res))

 

 


2.zip拉链
l1 = ['faker','me']
l2 = ['还行','贼帅']
# 需求:将两个列表中的元素一一对应
res = zip(l1,l2) # 结果是一个迭代器
print(list(res))

 

 


3.filter过滤
l1 = [1,2,3,4,5]
#需求:筛选出大于3的元素
方式1:生成列表式
res = [i,for i in l1 if i > 3]
方式2:内置函数
def index (x)
return x > 3
res = filter(index,l1)
print(list(res)) # [4,5]

4.reduce归总
from functools import reduce

l1 = [11, 22, 33]
需求:讲列表中所有的元素相加
# def index(x,y):
#     return x + y
# res = reduce(index,l1)
# print(res) # 66
res = reduce(lambda x, y: x + y, l1)
print(res) # 66
res = reduce(lambda x, y: x + y, l1, 100)
print(res) # 166


常见内置函数

1.abs()  # 取数的绝对值
2.all()与any() # all()元素的布尔值全为True则返回True
  # any()元素只要有一个是True结果就是True
3.bin()oct()hex() #分别可以将数据转换为二进制 八进制 十六进制
4.bytes() # 可以将字符转化为字节 str()字节可以转化为字符
5.callable() # 判断变量名或者函数名加括号是否可以调用以布尔值返回
6.chr(),ord() #字符==>数字,数字==>字符 依据ASCII码
7.dir() # 查看数据类型可调用的内置方法
8.divmod() # 实际应用在分页中,两数相处可以得到整数和余数两部分
9.enumerate() #利用for循环可以将一个列表以对应索引和值返回,默认起始0,括号内添加start=指定起始为位置也可
10.eval() exec() #识别python中字符串可执行的代码
#区别是eval实现简单逻辑,exec()可识别比较复杂的逻辑代码


 

 posted on 2022-03-23 00:41  鳗鱼的春天  阅读(32)  评论(0编辑  收藏  举报