Python三元表达式与匿名内置函数

本文介绍了Python中的三元表达式,用于简洁地实现条件判断。接着详细讲解了列表生成式、字典生成式和集合生成式,展示了如何通过这些生成式简化代码。此外,还探讨了匿名函数lambda的使用及其在配合内置函数max和min时的作用。最后,提到了map、filter和reduce等内置函数在数据处理中的应用,以及zip函数在合并列表时的功能。
摘要由CSDN通过智能技术生成

一、三元表达式

	什么是三元表本质?
	
		是对简单的代码进行缩写 简单的来说就是偷懒的写法减少代码行数
		三元表达式只适合较为简洁的条件判定 较为复杂的判定建议不要用这种方式写代码
		因为比较让他人难以理解
		
	三元表达式语法结构
	
		真时的结果 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只会链接相同的两个列表 如果列表数据值个数不一致 则后面会忽略'''
				

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoisMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值