📜  python 迭代器 - Python (1)

📅  最后修改于: 2023-12-03 15:19:12.094000             🧑  作者: Mango

Python 迭代器

Python迭代器是Python编程中重要的一个概念,掌握迭代器的使用,可以大大提高编程效率和代码简洁性。

迭代器概述

迭代器是Python中的一个对象,它能够访问一个容器并遍历容器中的所有元素,而不需要了解容器的底层实现。

在Python中,任何实现了两个方法 iter() 和 next() 的对象都是迭代器:

  • iter() 返回迭代器对象自身
  • next() 返回容器中的下一个元素

例如下面的代码定义了一个迭代器,它用于遍历一个列表中的所有元素:

class MyIterator:
    def __init__(self, my_list):
        self.current_index = 0
        self.my_list = my_list
        
    def __iter__(self):
        return self
        
    def __next__(self):
        if self.current_index >= len(self.my_list):
            raise StopIteration
        result = self.my_list[self.current_index]
        self.current_index += 1
        return result
        
# 使用迭代器遍历列表
my_list = ['a', 'b', 'c', 'd', 'e']
my_iterator = MyIterator(my_list)
for item in my_iterator:
    print(item)

输出:

a
b
c
d
e
可迭代对象

实际上,在Python中任何可迭代的对象都可以使用for循环进行遍历,例如列表、元组、字符串等。可迭代对象的定义是实现了方法 iter() 的对象,该方法返回一个迭代器。

例如下面的代码定义了一个可迭代对象,它用于遍历一个字符串中的所有字符:

class MyIterable:
    def __init__(self, my_string):
        self.my_string = my_string
        
    def __iter__(self):
        return MyIterator(self.my_string)
    
# 使用for循环遍历字符串
my_string = 'hello'
my_iterable = MyIterable(my_string)
for item in my_iterable:
    print(item)

输出:

h
e
l
l
o
内置迭代器

Python内置了几种常用的迭代器,包括:

  • iter():返回一个迭代器对象
  • next():返回容器中的下一个元素
  • enumerate():返回一个带有索引的迭代器
  • zip():返回一个打包多个列表、元组或其他可迭代对象的迭代器

例如下面的代码展示了zip()函数的使用:

my_list1 = [1, 2, 3, 4]
my_list2 = ['a', 'b', 'c', 'd']
my_iterator = zip(my_list1, my_list2)
for item in my_iterator:
    print(item)

输出:

(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
总结

Python迭代器是Python编程中基础和重要的一部分,学会并熟练运用迭代器可以大大提高编程效率和代码简洁性。熟悉Python内置的迭代器,对于快速开发高效代码也有很大帮助。