python中内置的迭代器

内置迭代器

在 Python 中,有几个内置函数接受可迭代对象作为参数并返回迭代器。这些函数广泛用于懒惰序列处理。

map 函数

map 函数是懒惰的:调用它不会执行计算以计算其结果的元素。相反,会创建一个迭代器对象,该对象可以在查询时返回结果。我们可以在以下示例中观察到这一点,其中 print 调用被延迟,直到从 doubled 迭代器请求相应的元素。

def double_and_print(x):
    print('***', x, '=>', 2*x, '***')
    return 2*x

s = range(3, 7)
doubled = map(double_and_print, s)  # double_and_print 尚未调用
print(next(doubled))                # double_and_print 调用一次
# *** 3 => 6 ***
# 6
print(next(doubled))                # double_and_print 再次调用
# *** 4 => 8 ***
# 8
print(list(doubled))                # double_and_print 再次调用两次
# *** 5 => 10 ***
# *** 6 => 12 ***
# [10, 12]
filter 函数

filter 函数返回一个迭代器,该迭代器包含通过给定条件函数的元素。

def is_even(x):
    return x % 2 == 0

s = range(3, 7)
filtered = filter(is_even, s)
print(next(filtered))  # 4
print(next(filtered))  # 6
zip 函数

zip 函数返回一个迭代器,该迭代器将多个可迭代对象的元素按顺序配对。

a = [1, 2, 3]
b = ['a', 'b', 'c']
zipped = zip(a, b)
print(next(zipped))  # (1, 'a')
print(next(zipped))  # (2, 'b')
reversed 函数

reversed 函数返回一个迭代器,该迭代器按相反顺序生成可迭代对象的元素。

s = [1, 2, 3]
reversed_s = reversed(s)
print(next(reversed_s))  # 3
print(next(reversed_s))  # 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

需要重新演唱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值