最近心血来潮,学习了一下Python,其中关于 推导式语法糖 感觉功能确实强悍,一行解决过滤问题,特此记录
在业务场景中肯定避免不了对于列表或者字典的过滤操作,那么按照传统过滤手段流程。
在python中倒是显得简单化了
本文只介绍
语法: [表达式 for 表达式 in 迭代器 if 条件]
是不是第一眼看起来感觉太抽象了,我们直接看看代码示例
代码示例
# 推导式
# 列表推导式
#这个月天数列表 假设是大月
dayList = [day for day in range(31) if day >=1]
#同等与
newList = []
for i in range(31):
if i == 0:
continue
pass
newList.append(i)
print("天数列表推导式前后数据\n{before},\n{after} ".format(before=newList,after=dayList))
结果
天数列表推导式前后数据
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
由此可见该语法糖的实用性多强。
语法: [key:value for key in 迭代器 for value in 迭代器 if 条件]
看起来比列表推导式多了个value的遍历,实际上更简单
#字典推导式
#多个用户数据 随机密码
import uuid
nameList = ["小明","张三","李四"]
passWordList = []
index = 1
while index <= len(nameList):
passWordList.append(str(uuid.uuid4()))
index+=1
userInfo = {key:value for key in nameList for value in passWordList}
print(userInfo)
使用了uuid库用来做随机生成的密码,代码一目了然!
结果
{'小明': '0df514d4-cc1e-40b3-ad7d-4d364448b5bb', '张三': '0df514d4-cc1e-40b3-ad7d-4d364448b5bb', '李四': '0df514d4-cc1e-40b3-ad7d-4d364448b5bb'}
关于 Python学习笔记 —— 独步天下推导式语法糖 就讲到这里,对你有帮助的话!
谢谢你的观看!