python一些表达式

本文介绍了Python中的列表推导式和元组推导式,它们提供了简洁的语法来创建列表和元组。元组推导式返回的是生成器对象,而非元组。此外,还讲解了lambda表达式用于快速创建匿名函数,以及如何使用ifelse表达式。生成器在内存效率上优于列表,它们在需要时计算元素。迭代器则用于按需遍历集合,一旦遍历结束,迭代器不可回溯。装饰器是增强函数功能的工具,通过@符号应用,无需修改原函数代码即可添加新功能。
摘要由CSDN通过智能技术生成

列表推导式

a = [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
执行顺序同for循环,返回值a是一个列表

http://c.biancheng.net/view/2231.html

元组推导式

(表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] )
和列表推导式做对比,你会发现,除了元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是 [],其它完全相同。不仅如此,元组推导式和列表推导式的用法也完全相同。
但是元组推导式返回的是生成器对象,并不是元组,和列表推导式稍有不同。

http://c.biancheng.net/view/4443.html

无论是使用 for 循环遍历生成器对象,还是使用 next() 方法遍历生成器对象,遍历后原生成器对象将不复存在,这就是遍历后转换原生成器对象却得到空元组的原因。

lambda表达式

lambda 匿名函数
语法:lambda [arg1 [,arg2,…argn]]:expression
调用lambda函数:

sum = lambda a,b: a+b
sum(10,20) # 30
sum(20,30) # 50

https://www.cnblogs.com/jixn/p/14117386.html
https://www.runoob.com/python/python-functions.html
更复杂的用法 https://zhuanlan.zhihu.com/p/27607704

问号表达式

使用if else实现

b = 5
a = 2 if b == 4 else 1
print a  

生成器 generator

一边循环一边计算出后续的元素,节省大量空间,元组推导式返回的就是生成器。
generator保存的是算法,调用next()函数,或者遍历生成器,就能计算出生成器下一个元素的值,直到没有元素为止。
当函数里面使用yield关键字,调用函数时,遇到yield就中断返回yield后面的值,再次调用该函数,会从yield的位置继续执行,直到结束。

https://www.runoob.com/python3/python3-iterator-generator.html

迭代器

迭代用于访问集合元素,可以记住遍历的位置,从可迭代对象【Iterable】的第一个元素开始遍历,直到所有元素都被遍历一遍结束,迭代器只能前进不会后退。
迭代器两个基本方法,iter() 创建迭代器 next() 输出迭代器的下一个元素-遍历,可用for循环遍历。
list dict str 都是可迭代对象,但是不是迭代器,iter()函数将Iterable变成Iterator

a = [1,2,3]
ite = iter(a)
next(ite)

装饰器 Decorators

是修改其他函数的功能的函数–>不改变函数代码但是增加函数功能。
python装饰器封装一个函数,用各种方式来修改他的行为,使用 @ 符号是一个简短的方式来生成一个被装饰的函数。
@wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等的功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性。

https://www.runoob.com/w3cnote/python-func-decorators.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值