首页Python【Python内置函数】i...

【Python内置函数】iter()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

iter() 函数是 Python 中的一个内置函数,用于获取一个迭代器。迭代器是一个表示数据流的对象,它一次返回集合中的一个元素。

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

iter(iterable)iter(callable, sentinel)
参数说明:
  • iterable:一个可以返回迭代器的对象,如列表、元组、字符串、集合、字典等;
  • callable:一个无参数的可调用对象(例如函数);
  • sentinel:可选参数,用于指定一个哨兵值。当迭代对象返回该哨兵值时,迭代器会停止迭代。该参数通常用于文件读取等场景。

返回值:

iter() 函数返回一个迭代器对象。

02
使用

当使用 iter() 函数时,其行为会根据是否提供第二个参数而有所不同。下面是一些使用 iter() 函数的示例:

  • 没有第二个参数:
当只用一个参数调用 iter() 时,对象必须支持可迭代协议或序列协议,如果对象不支持这两种协议中的任何一种,则会引发 TypeError 异常。
  • 示例 1:可迭代协议
对象必须有一个 __iter__() 方法,该方法返回一个迭代器,适用于列表、元组、字典、集合和字符串等对象。例如:
my_list = [1, 2, 3]
iterator = iter(my_list)

print(next(iterator))  # 输出: 1
print(next(iterator))  # 输出: 2
print(next(iterator))  # 输出: 3
print(next(iterator))  # 抛出 StopIteration 异常


  • 示例 2:序列协议

如果对象没有 __iter__() 方法,它仍然可以通过 __getitem__() 方法来支持整数索引的序列协议来实现可迭代。例如:

class MySequence:
    def __getitem__(self, index):
        if index >= 2:
            raise IndexError
        return index

seq = MySequence()
it = iter(seq)
print(next(it))  # 输出: 0
print(next(it))  # 输出: 1
print(next(it))  # 抛出 StopIteration 异常


  • 提供第二个参数(哨兵):
当向 iter() 提供第二个参数时,第一个参数必须是一个可调用对象。在这种情况下创建的迭代器将反复调用该可调用对象,直到它返回哨兵值。当可调用对象返回哨兵值时,迭代器将引发 StopIteration。否则,它将返回该值。这适用于从流或任何其他提供数据直到满足特定条件的源读取数据的情况。
例如,在下面的示例中,file.readline 是一个函数,它每次调用都会读取文件的一行内容。当读取到文件末尾时,readline 会返回一个空字符串,这时 iter() 函数就会停止迭代,因为哨兵值是空字符串。
import io

# 使用 StringIO 模拟创建一个文件对象
file = io.StringIO('hellonworldn!')

# 使用 iter() 函数创建迭代器,并指定哨兵值
it = iter(file.readline, '')
# 读取文件内容
for line in it:
    print(line, end='')
# 输出:hello
#      world
#      !

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments