继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 iter

2882716
关注TA
已关注
手记 70
粉丝 0
获赞 0

Python 的内置函数 iter() 是一个用于获取迭代器的核心函数,它可以将可迭代对象转换为迭代器对象。以下是关于 iter() 函数的详细说明:

1. 基本用法

iter() 函数接受一个可迭代对象作为参数,返回该对象的迭代器。基本语法为:

iter(iterable)

示例:

my_list = [1, 2, 3]
my_iter = iter(my_list)
print(next(my_iter))  # 输出:1
print(next(my_iter))  # 输出:2

2. 可迭代对象类型

iter() 可以处理多种可迭代对象,包括但不限于:

  • 列表(list)
  • 元组(tuple)
  • 字符串(str)
  • 字典(dict,迭代的是键)
  • 集合(set)
  • 文件对象(file)

3. 自定义迭代器

iter() 也可以与自定义类一起使用,只要类实现了 __iter__() 方法或 __getitem__() 方法。

示例:

class MyNumbers:
    def __init__(self, max_num):
        self.max_num = max_num
    
    def __iter__(self):
        self.n = 0
        return self
    
    def __next__(self):
        if self.n <= self.max_num:
            result = self.n
            self.n += 1
            return result
        else:
            raise StopIteration

numbers = MyNumbers(5)
num_iter = iter(numbers)
for num in num_iter:
    print(num)

4. 哨兵值用法

iter() 还有一个特殊用法,可以接受两个参数:

iter(callable, sentinel)
  • callable:可调用对象(通常是无参函数)
  • sentinel:哨兵值,当调用返回值等于哨兵值时停止迭代

这种形式常用于读取文件直到特定标记出现,或处理输入流。

示例:

import random

def random_number():
    return random.randint(1, 10)

# 当随机数等于5时停止
for num in iter(random_number, 5):
    print(num)

5. 注意事项

  • 尝试对不可迭代对象使用 iter() 会引发 TypeError
  • 迭代器是单向的,一旦耗尽就无法重用
  • 使用 next() 函数可以手动获取迭代器的下一个值

6. 实际应用场景

  • 处理大型数据集时避免一次性加载所有数据
  • 实现惰性求值(lazy evaluation)
  • 自定义数据结构的遍历行为
  • 与生成器表达式结合使用

iter() 函数是 Python 迭代协议的核心组成部分,理解它的工作原理对于编写高效的 Python 代码非常重要。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP