专业编程基础技术教程

网站首页 > 基础教程 正文

Python中迭代器常用到的函数(python中迭代器的基本方法)

ccvgpt 2024-11-15 16:40:36 基础教程 6 ℃

Python 内置的两个函数 map() 和 filter() 复制了生成器表达式的两个特性:

map(function, iterable, ....) 返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。 如果传入了额外的 iterable 参数,function 必须接受相同个数的实参并被应用于从所有可迭代对象中并行获取的项。 当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束。

Python中迭代器常用到的函数(python中迭代器的基本方法)

你当然也可以用列表推导式达到同样的效果。

filter(predicate, iter) 返回一个遍历序列中满足指定条件的元素的迭代器,和列表推导式的功能相似。 predicate (谓词)是一个在特定条件下返回真值的函数;要使用函数 filter(),谓词函数必须只能接受一个参数。

enumerate(iter, start=0) 计数可迭代对象中的元素,然后返回包含每个计数(从 start 开始)和元素两个值的元组。:

sorted(iterable, key=None, reverse=False) 会将 iterable 中的元素收集到一个列表中,然后排序并返回结果。其中 keyreverse 参数会传递给所创建列表的 sort() 方法。

内置函数 any(iter)all(iter) 会查看一个可迭代对象内容的逻辑值。any() 在可迭代对象中任意一个元素为真时返回 True,而 all() 在所有元素为真时返回 True:

zip(iterA, iterB, ...) 从每个可迭代对象中选取单个元素组成列表并返回:

zip(['a', 'b', 'c'], (1, 2, 3)) =>
  ('a', 1), ('b', 2), ('c', 3)

它并不会在内存创建一个列表并因此在返回前而耗尽输入的迭代器;相反,只有在被请求的时候元组才会创建并返回。

这个迭代器设计用于长度相同的可迭代对象。如果可迭代对象的长度不一致,返回的数据流的长度会和最短的可迭代对象相同

zip(['a', 'b'], (1, 2, 3)) =>
  ('a', 1), ('b', 2)

然而,你应该避免这种情况,因为所有从更长的迭代器中取出的元素都会被丢弃。这意味着之后你也无法冒着跳过被丢弃元素的风险来继续使用这个迭代器。

最近发表
标签列表