一、三元表达式
什么是三元表本质?
是对简单的代码进行缩写 简单的来说就是偷懒的写法减少代码行数
三元表达式只适合较为简洁的条件判定 较为复杂的判定建议不要用这种方式写代码
因为比较让他人难以理解
三元表达式语法结构
真时的结果 if 判定条件 else 为假时的结果
如果if后面的条件成立 则使用if前面真的时候值
如果if后面的条件不成立 则使用else后面假的值
ex: 获取用户输入的用户名 如果是MeiJin就打印欢迎 否则打印GO OUT NOw!
正常方式: username = input('username>>>:').strip()
if username == 'MeiJin':
print('欢迎')
else:
print('GO OUT NOW!')
三元表达式: username = input('username>>>:').strip()
print('欢迎') if username == 'MeiJin' else print('GO OUT NOW !')
''''
正常方式五行的代码 三元表达式两行就解决了
在python中代码不是精简的越少越好 在精简的过程中还要保证代码的可读性
'''
二、各种生成式
1. 列表生成式
ex: 给上述列表中所有的数据值加上_Lebron James的后缀
name_list = ['A', 'B', 'C', 'D', 'E']
正常方式: name_list = ['A', 'B', 'C', 'D', 'E']
new_list = [] 定义一个新的列表
for name in name_list: 循环原列表中所有的数据值
new_name = name + '_Lebron James' 拼接_NB后缀
new_list.append(new_name) 追加到新列表中
print(new_list)
三元表达式: name_list = ['A', 'B', 'C', 'D', 'E']
new_list = [name + '_Lebron James' for name in name_list]
print(new_list)
2. 字典生成式
ex: 我们已知字典中的V值是LebronJames 我们现在需要给我字典加上K
三元表达式: new_dict = {i: 'LebronJames' for i in range(10)}
print(new_dict)
3. 集合生成式
ex: 已知一个集合里面没有值 请依次从0-10
三元表达式: new_set = {i for i in range(11)}
print(new_set)
三、匿名函数
什么事匿名函数?
匿名函数就是没有函数名的函数
语法结构
函数名 = lambda 参数 :返回值
参数可以有多个 用逗号隔开
匿名函数不管逻辑多复杂 只能写一行 且逻辑执行结束后的内容就是返回值
返回值和正常的函数一样可以是任意数据类型
应用场景
匿名函数通常都需要配合其他函数一起使用 用于减少代码
ex:
print((lambda x: x + 1)(123)) 直接调用
res = lambda x: x + 1 命名调用
print(res(123))
四、匿名集合内置函数使用
max()最大的数据值
min()最小的数据值
ex: 已知列表中有很多数字,但是现在需要立马找到里面最大的值
new_list = [11,2131241,54,46,457678,6,7,46,453,53,424,24,45,76,8679345,3543]
正常方法: new_list = [11, 2131241, 54, 46, 457678, 6, 7, 46, 453, 53, 424, 24, 45, 76, 8679345, 3543]
new_list.sort() 先升序
print(new_list[-1]) 索引取值最后一个
max方法: old_list = [11, 2131241, 54, 46, 457678, 6, 7, 46, 453, 53, 424, 24, 45, 76, 8679345, 3543]
new_list = max(old_list) 一个新的变量名来获取最大值
print(new_list)
'''正相反 min就是最小的数据值'''
五、重要内置函数
1.map() 映射
ex: 已知有一个列表我们需要将列表中的数据值自增45怎么操作
new_list = [12,54,65,8766,23,34,5456,678,345,23,12]
正常方法: new_list = [12, 54, 65, 8766, 23, 34, 5456, 678, 345, 23, 12]
def index(a):
return a + 45 循环返回值+45
res = map(index, new_list) map也会像for循环一样把每个数据值据映射出来交给下面的函数名
print(list(res))
列表生成式: new_list = [12, 54, 65, 8766, 23, 34, 5456, 678, 345, 23, 12]
res = map(lambda x: x + 45, new_list) map也会像for循环一样把每个数据值据映射出来交给下面的函数名然后+45赋值给res
print(res)
print(list(res))
'''底层也是for循环 循环出每个数据值 把数据值交给函数去处理 就会返回数据值 依次循环 这就是映射'''
2.filter() 过滤
ex: 已知我们有一个列表里面有很多人名 我们需要移除Lebron James
l1 = ['Lebron James', 'love', 'your', 'self']
正常方法: new_list = ['Lebron James', 'love', 'your', 'self']
def index(a):
return a != 'Lebron James'
res = filter(index, new_list)
print(list(res))
列表生成式: new_list = ['Lebron James', 'love', 'your', 'self']
res = filter(lambda a: a != 'Lebron James', new_list)
print(res)
print(list(res))
'''主要用于筛选出相要的单个元素'''
3.reduce() 归总
ex: 已知有一个列表求列表中所有数据值的和
new_list = [1,2,3,4]
sum(): new_list = [1, 2, 3, 4]
res = sum(new_list)
print(res)
reduce(): new_list = [1, 2, 3, 4]
from functools import reduce 将很多单体 变成一个整体
res = reduce(lambda x, y: x + y, new_list, 510)
print(res)
'''将数组中每个元素汇总出一个结果'''
4.zip() 拉链
ex: 已知我们有两个列表我们需要给他们依次组队
new_list = ['one', 'two', 'three']
name_list= ['Lebron James', 'Meijin', 'wawoo']
zip(): new_list = ['one', 'two', 'three']
name_list = ['Lebron James', 'Meijin', 'wawoo']
res = zip(new_list, name_list)
print(res)
print(list(res))
'''注意zip只会链接相同的两个列表 如果列表数据值个数不一致 则后面会忽略'''