iterables和iterators

iterablesiterators

在Python 中,iterables iterators 是两个常见的概念。简单来说:

1) iterable 是一种可以被迭代的对象,比如列表、元组、字符串等。通过调用 iter()方法,可以得到它的迭代器。

2) iterator 是一个对象,它实现了迭代协议(有__iter__()__next__()方法)。iterator 可以从 iterable 中逐个读取元素。打个比方,iterable 就像一本书,而 iterator 就像一个书签,它可以用来记住我们读到哪一页了。

扩展

1) Iterable

• 可迭代对象,如列表、元组、字符串、字典、集合等。

• 这些对象实现了__iter__()方法,返回一个 iterator

• 可以直接使用 for 循环进行遍历。

my_list = [1, 2, 3]
for item in my_list:
    print(item)

2) Iterator

• 迭代器对象,使用 iter()从一个 iterable 中获取。

• 具有__next__()方法,可以返回下一个元素,并更新状态。

• 如果没有更多元素,__next__()会引发 StopIteration 异常。

my_iter = iter(my_list)
print(next(my_iter))  # 输出 1
print(next(my_iter))  # 输出 2
print(next(my_iter))  # 输出 3

3) 手动实现一个简单的 Iterator

• 可以通过自定义类来实现迭代器。

class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.index < len(self.data):
            result = self.data[self.index]
            self.index += 1
            return result
        else:
            raise StopIteration

my_iter = MyIterator([10, 20, 30])
for item in my_iter:
    print(item)

"""
10
20
30
"""

4)应用场景

• 使用 iterables 和 iterators 可以有效处理大数据,比如文件读取、网络流处理等。

•避免将所有数据一次性加载到内存中,提高程序效率。

5) 生成器(Generators)

•它们是一种特殊的迭代器,更加简洁,通过yield 关键词生成。

• 用例包括 C-style 式的 generator expression 和 Python 的 generator functions,示例如下:

def my_generator():
    yield 1
    yield 2
    yield 3

for value in my_generator():
    print(value)

你可能感兴趣的:(python知识学习,python)