Python基础总结之Python中常见的迭代器介绍

Python基础总结之Python中常见的迭代器介绍

Python 提供了许多内置的迭代器,此外你还可以创建自定义的迭代器,以满足特定的编程需求。以下是一些常用的内置迭代器以及创建自定义迭代器的示例和工具类:

常用的内置迭代器

  1. enumerate()

    • 将一个可迭代对象(如列表)组合为一个索引序列,常用于在 for 循环中同时获取索引和元素。
    fruits = ['apple', 'banana', 'cherry']
    for index, fruit in enumerate(fruits):
        print(index, fruit)
    
  2. zip()

    • 将多个可迭代对象组合为一个迭代器,每次迭代返回一个元组,元组的元素来自不同的可迭代对象。
    names = ['Alice', 'Bob', 'Charlie']
    scores = [85, 90, 95]
    for name, score in zip(names, scores):
        print(name, score)
    
  3. iter()next()

    • iter() 用于将对象转换为迭代器,next() 用于从迭代器中获取下一个元素,适用于需要手动控制迭代的场景。
    nums = [1, 2, 3]
    it = iter(nums)
    print(next(it))  # 1
    print(next(it))  # 2
    
  4. reversed()

    • 返回一个反向迭代器,用于逆序遍历可迭代对象。
    for num in reversed(range(5)):
        print(num)
    
  5. itertools 模块

    • 提供了一组强大的迭代器函数,例如 count()cycle()chain()islice() 等,用于创建复杂的迭代器。
    from itertools import cycle, islice
    colors = cycle(['red', 'green', 'blue'])
    for color in islice(colors, 5):
        print(color)
    

自定义迭代器

你可以通过创建包含 __iter__()__next__() 方法的类来自定义迭代器。以下是一个简单的自定义迭代器示例:

class Countdown:
    def __init__(self, start):
        self.current = start

    def __iter__(self):
        return self

    def __next__(self):
        if self.current <= 0:
            raise StopIteration
        self.current -= 1
        return self.current

countdown = Countdown(5)
for num in countdown:
    print(num)

迭代器工具类

你还可以创建一些常用的迭代器工具类,以提高编程效率。以下是一个通用的迭代器工具类示例:

class RangeIterator:
    def __init__(self, start, end, step=1):
        self.current = start
        self.end = end
        self.step = step

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        value = self.current
        self.current += self.step
        return value

range_iterator = RangeIterator(1, 10, 2)
for num in range_iterator:
    print(num)

这个 RangeIterator 类类似于 range() 函数,但可以更灵活地定义步长和范围。

通过使用这些内置和自定义的迭代器,你可以更好地控制迭代过程,优化代码,并应对各种复杂的编程场景。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值