「python」三元表达式 各种生成式 匿名函数 匿名集合内置函数使用 重要内置函数

三元表达式

三元表达式在二选一的情况下使用
不建议嵌套使用

#他的存在就是为了减少代码层级
#当条件为true 返回前者 条件为false 返回后者
condition_is_true if condition else condition_is_false

应用场景

#1. 比较两个数字的大小(优化前)
def bigger_num(a, b):
	if a>b
		return a
	else
	 	return b

res = big_num(a, b)
print(res)
# 优化后
def bigger_num(a,b)
return a if a>b else return b
res = bigger_num(a,b)
print(res)

ps: 在用python编写的时候,不是越精简越好,而是在精简的基础上确保代码的可读性(思路清晰易懂)

各种生成式

列表生成式

作用:一次性以相同的操作处理列表中的多个数据值
在列表的生成式中只能出现for和if 其他都不可使用
列表生成式的使用频率最高

应用场景

name_list = ['686', 'coco','v10', 'jojo','m','bobo']
#需求:给上述列表中的所有数据添加UCD_前缀
#优化前
name_list = ['686', 'coco', 'v10', 'jojo', 'M', 'bobo']
new_list = []
for name in name_list:
    new_name = 'UCD_' + name
    new_list.append(new_name)
print(new_list)

#优化后
new_list = ['UCD_' + name for name in name_list]
print(new_list)

#执行结果
['UCD_686', 'UCD_coco', 'UCD_v10', 'UCD_jojo', 'UCD_M', 'UCD_bobo']
#还支持if判断 添加需求不给Lin添加UCD_并删除Lin
name_list = ['686', 'coco','v10', 'jojo','m','bobo', 'lin']
new_list = ['UCD_' + name for name in name_list if name != 'lin']
#执行结果
['UCD_686', 'UCD_coco', 'UCD_v10', 'UCD_jojo', 'UCD_M', 'UCD_bobo']

#先执行for循环 然后将每一个数据值交给if判断 若成立(true)则返回for循环前面进行处理

字典生成式

与列表生成式类似 先执行for循环然后拿到for循环每一个值 接着用if判断 最后交给for循环前处理

new_dict = {i: 'john' for i in range(9) if i > 6}
print(new_dict)
结果为
{7: 'john', 8: 'john'}

集合生成式

new_set = {i for i in range(12) if i != 6}
print(new_set)
#结果为
{0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11}

注意元组是唯一不在生成器范畴,而是后面重点讲解的迭代器知识

匿名函数

定义

没有名称定义的函数称之为匿名函数

# python中匿名函数的语法为
lambda arguments: expression

匿名函数可以这么理解

若之前学的函数:def func()是有名函数
那么func = lambda x,y :

常见内置函数

max()

l1 = [321,3124,5346,74465,765,345,23453,6574,756,435,3425,6547,543,234,6457,687,6567,68987,6,54,43564]
#1.假设有这一列数据 需要取其最大值
res = max(l1)
print(res)
结果为
74465

#结合字典使用
#2.找出以下伤害最高的选手
#错误示范
dic = {
    'john': 3000,
    'ran' : 200,
    'zzr' : 500,
    'Awu' : 100
}
res = max(dic)
print(res)
结果为
'''john'''
# max方法的底层其实就是for循环,字典在参与for循环的时候,只有字典的键参与循环,比较的是键的首字母的ASCII码。

#正确解法1
res = max(dic, key=lambda k: dic.get(k)) 
print(res)
'''john'''
#正确解法2
def index(k):
    return dic.get(k)
res = max(dic, key=index)
print(res)

min()

与max()的原理相同,参考max()的运用

重要内置函数

map()

用map()可以对容器内所有数据执行相同操作

l1 = [100,110,120,110,111,333]
# 需求:将列表内所有数据值自减1
res = map(lambda x:x-1, l1)
print(list(res))

filter()

使用filter可以删除列表内的数据值

l1 = ['686','coco', 'v10', 'jojo','lin']
#需求是移除列表内的Lin
res = filter(lambda a:a != 'lin', l1)
print(list(res))

reduce()

化整为零的过程(对参数列表中多个数据进行累积)

l1 = [12321, 324, 324, 2352, 123, 4532]
# 需求是求列表中所有数据的总和 再加20
from functools import reduce	#Python3.x reduce()被移到functools模块里,如果要使用则需要引入functools模块来调用reduce()函数:

res = reduce(lambda x, y: x + y, l1,20)
print(res)

zip()

zip()用于将可迭代的对象作为参数,并将对象中对应的元素打包成元组,然后返回由这些元组组成的列表

n1 = ['686', 'coco', 'jojo']
n2 = [1, 2, 1]
n3 = ['m4', 'ak', 'm4']
res = zip(n1, n2, n3)
print(list(res))
#结果
'''
[('686', 1, 'm4'), ('coco', 2, 'ak'), ('jojo', 1, 'm4')]
'''

多层装饰器及有参装饰器的执行流程单独一篇详写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值