Python内置函数iter()详解

Python的iter()函数是一个用于获取对象的迭代器的内置函数。这个函数对于实现迭代协议的对象非常有用,允许我们对集合进行迭代。

函数定义

iter()函数的基本语法如下:

iter(object[, sentinel])
  • object:支持迭代的集合对象。
  • sentinel:如果提供了第二个参数,那么object必须是一个可调用的对象(如函数),此时迭代会在返回值等于sentinel的时候终止。

如果不提供sentinel参数,object必须是一个支持迭代协议的对象(即,有__iter__()方法或者序列类型的__getitem__()方法),函数返回一个迭代器对象。

基本用法

获取列表迭代器

my_list = [1, 2, 3]
my_iter = iter(my_list)

print(next(my_iter))  # 输出: 1
print(next(my_iter))  # 输出: 2

使用sentinel参数

def countdown(n):
    print('Starting countdown from', n)
    while n > 0:
        yield n
        n -= 1

# 创建一个以0为终止符的迭代器
iter_countdown = iter(countdown(5).__next__, 0)

for number in iter_countdown:
    print(number)

高级用法

自定义迭代器

class Counter:
    def __init__(self, low, high):
        self.current = low
        self.high = high

    def __iter__(self):
        return self

    def __next__(self):
        if self.current > self.high:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

for c in Counter(3, 8):
    print(c)

与生成器一起使用

def my_generator():
    for i in range(5):
        yield i

gen = my_generator()
for value in gen:
    print(value)

注意事项

  • 使用iter()时,如果对象不支持迭代协议,将抛出TypeError
  • 迭代器是一次性的,一旦耗尽,再次调用next()将抛出StopIteration异常。

结论

iter()是Python中一个非常有用的内置函数,它提供了一种标准的方法来迭代各种类型的集合对象。通过上述例程,我们可以看到iter()在实际编程中的应用,以及如何有效地使用它来简化代码和增强其可读性。

相关推荐

  1. Python函数iter()详解

    2024-05-01 08:42:05       11 阅读
  2. 详解Python函数 !!!

    2024-05-01 08:42:05       34 阅读
  3. python函数dir()、divmod()详解

    2024-05-01 08:42:05       16 阅读
  4. python函数compile(),complex()详解

    2024-05-01 08:42:05       16 阅读
  5. python函数enumerate()、eval()详解

    2024-05-01 08:42:05       20 阅读
  6. Python函数hex()详解

    2024-05-01 08:42:05       12 阅读
  7. Python函数input()详解

    2024-05-01 08:42:05       13 阅读
  8. Python 函数 float() 详解

    2024-05-01 08:42:05       12 阅读
  9. Python函数isinstance()详解

    2024-05-01 08:42:05       10 阅读
  10. Python函数map()详解

    2024-05-01 08:42:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-01 08:42:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-01 08:42:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-01 08:42:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-01 08:42:05       18 阅读

热门阅读

  1. Seata分布式原理及优势

    2024-05-01 08:42:05       13 阅读
  2. 鼠标界面的隐藏显示

    2024-05-01 08:42:05       7 阅读
  3. 安卓手机APP开发__媒体开发部分__媒体投屏

    2024-05-01 08:42:05       12 阅读
  4. 【Spring】4.Spring的事务管理解析

    2024-05-01 08:42:05       10 阅读
  5. 学习 Rust 的第十五天:如何处理程序异常信息

    2024-05-01 08:42:05       9 阅读