【Python】(八)列表生成式、迭代器、生成器、装饰器
发布日期:2021-05-08 01:12:19 浏览次数:18 分类:精选文章

本文共 1666 字,大约阅读时间需要 5 分钟。

列表生成式与迭代器

列表生成式

列表生成式(List Comprehensions)是Python编程中一个强大的工具,可以用来简洁地创建列表。它通过在一个列表推导式中将表达式和迭代语句结合在一起,从而避免了传统的循环结构。

例子

要生成一个简单的列表,可以使用以下代码:

list(range(1, 11))

这将返回 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

如果想要生成一个平方数的列表,可以使用列表生成式:

[x * x for x in range(1, 11)]

这会生成 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表生成式可以嵌入多个条件判断。例如,筛选出偶数的平方:

[x * x for x in range(1, 11) if x % 2 == 0]

这将返回 [4, 16, 36, 64, 100]

迭代器

在Python中,能够作用于for循环的对象称为可迭代对象(Iterable)。常见的可迭代对象包括列表、元组、集合、字典、字符串以及生成器等。

判断可迭代对象

可以通过isinstance()方法判断一个对象是否是可迭代对象:

from collections import Iterable
isinstance([], Iterable) # True
isinstance({'key': 'value'}, Iterable) # True
isinstance('abc', Iterable) # True
isinstance((x for x in range(10)), Iterable) # True
isinstance(100, Iterable) # False

生成器

生成器(Generator)是一种特殊的可迭代对象,它可以在循环时惰性计算每个元素。生成器可以通过函数返回一个生成器对象,或者通过列表推导式将[]改为()来创建。

示例

g = (x * x for x in range(10))

这个生成器可以通过for循环遍历:

for n in g:
print(n)

生成器的优势在于它不会占用内存,适合处理大量数据或无限数据。

装饰器

装饰器(Decorator)是一种通过动态地扩展函数功能的机制。它通过将一个函数包装在一个新的函数中,增添额外的功能。

简单装饰器

def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper

使用示例:

@log
def now():
print('2015-3-25')

调用时:

now()

输出:

call now():
2015-3-25

带参数的装饰器

def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator

使用示例:

@log('execute')
def now():
print('2015-3-25')

调用时:

now()

输出:

execute now():
2015-3-25

总结

列表生成式是一种简洁高效的列表创建工具,生成器能够在循环时惰性计算,节省内存。装饰器是一种动态扩展函数功能的强大工具,可以在不修改函数定义的情况下为函数添加功能。

上一篇:SpringBoot实现登录国际化
下一篇:Kaptcha+SpringBoot实现验证码功能(单体/前后端分离)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月04日 11时32分51秒