当前位置: 首页 > news >正文

珠海网站建设运营公司网站建设高端网站

珠海网站建设运营公司,网站建设高端网站,推广的含义,北京网站seowyhseo推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 当您只想循环遍历迭代器、检索序列中的元素并处理它们时,这些元素特别有用 - 所有这些都无需将它们存储在内存中。今天我们将学习如何使用以下四个迭代工具过滤器函数: filterfalsetakewhiledr…
推荐:使用 NSDT场景编辑器 快速搭建3D应用场景

当您只想循环遍历迭代器、检索序列中的元素并处理它们时,这些元素特别有用 - 所有这些都无需将它们存储在内存中。今天我们将学习如何使用以下四个迭代工具过滤器函数:

  • filterfalse
  • takewhile
  • dropwhile
  • islice

让我们开始吧!

开始之前:有关代码示例的说明

在本教程中:

  • 我们将讨论的所有四个函数都给出了迭代器。为了清楚起见,我们将使用简单的序列,并用于获取包含迭代器返回的所有元素的列表。但是,除非必要,否则在处理长序列时不要这样做。因为当您这样做时,您将失去迭代器为您提供的内存节省。list()
  • 对于简单的谓词函数,您还可以使用 lambda。但为了更好的可读性,我们将定义常规函数并将它们用作谓词。

1. filterfalse

如果你已经用Python编程了一段时间,你可能会使用内置函数和语法:filter

filter(pred,seq)
# pred: predicate function
# seq: any valid Python iterable

该函数提供了一个迭代器,该迭代器从谓词返回的序列中返回元素。filterTrue

让我们举个例子:

nums = list(range(1,11)) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]def is_even(n):return n % 2 == 0

在这里,列表和函数分别是序列和谓词。numsis_even

为了获取 中所有数的列表,我们使用如下所示的:numsfilter

nums_even = filter(is_even, nums)
print(list(nums_even))
Output >>> [2, 4, 6, 8, 10]

现在让我们了解.我们将从 itertools 模块导入函数(以及我们将讨论的所有其他函数)。filterfalsefilterfalse

顾名思义,与函数的作用相反。它提供了一个迭代器,该迭代器返回谓词返回的元素。以下是使用该函数的语法:filterfalsefilterFalsefilterfalse

from itertools import filterfalse
filterfalse(pred,seq)

该函数返回 中的所有奇数。因此,使用获得的列表是以下所有奇数的列表:is_evenFalsenumsnums_oddfilterfalsenums

from itertools import filterfalsenums_odd = filterfalse(is_even, nums)
print(list(nums_odd)) 
Output >>> [1, 3, 5, 7, 9]

2. takewhile

使用该函数的语法为:takewhile

from itertools import takewhile
takewhile(pred,seq)

该函数给出一个迭代器,只要谓词函数返回 .当谓词首次返回时,它将停止返回元素。takewhileTrueFalse

对于 n 长度序列,if 是谓词函数返回的第一个元素,则迭代器返回 ,..., .seq[k]Falseseq[0]seq[1]seq[k-1]

考虑以下列表和谓词函数。我们使用如下所示的函数:numsis_less_ than_5takewhile

from itertools import takewhiledef is_less_than_5(n):return n < 5nums = [1, 3, 5, 2, 4, 6]
filtered_nums_1 = takewhile(is_less_than_5, nums)
print(list(filtered_nums_1))  

在这里,谓词首次返回数字 5:is_less_than_5False

Output >>> [1, 3]

3. dropwhile

在功能上,函数执行与函数相反的操作。dropwhiletakewhile

以下是使用该函数的方法:dropwhile

from itertools import dropwhile
dropwhile(pred,seq) 

该函数提供了一个不断丢弃元素的迭代器,只要谓词是 .这意味着迭代器在谓词第一次返回之前不会返回任何内容。一旦谓词返回,迭代器返回序列中的所有后续元素。dropwhileTrueFalseFalse

对于 n 长度序列,if 是谓词函数返回的第一个元素,则迭代器返回 ,..., .seq[k]Falseseq[k]seq[k+1]seq[n-1]

让我们使用相同的序列和谓词:

from itertools import dropwhiledef is_less_than_5(n):return n < 5nums = [1, 3, 5, 2, 4, 6]
filtered_nums_2 = dropwhile(is_less_than_5, nums)
print(list(filtered_nums_2)) 

因为谓词函数第一次返回元素 5,所以我们得到从 5 开始的序列的所有元素:is_less_than_5False

Output >>> [5, 2, 4, 6]

4. islice

您已经熟悉对 Python 可迭代对象(如列表、元组和字符串)进行切片。切片采用语法:。iterable[start:stop:step]

但是,这种切片方法具有以下缺点:

  • 处理大型序列时,每个切片或子序列都是占用内存的副本。这可能效率低下。
  • 由于步骤也可以采用负值,因此使用开始值、停止值和步骤值会影响可读性。

该函数解决了上述限制:islice

  • 它返回一个迭代器。
  • 它不允许该步骤为负值。

您可以像这样使用该函数:islice

from itertools import islice
islice(seq,start,stop,step) 

以下是使用该函数的几种不同方式:islice

  • Using 返回切片上的迭代器,,..., .islice(seq, stop)seq[0]seq[1]seq[stop - 1]
  • 如果指定开始值和停止值:该函数在切片上返回一个迭代器,,..., .islice(seq, start, stop)seq[start]seq[start + 1]seq[start + stop - 1]
  • 指定开始、停止和步进参数时,该函数将返回切片、、,..., .这样<和>= .seq[start]seq[start + step]seq[start + 2*step]seq[start + k*step]start + k*stepstopstart + (k+1)*stepstop

让我们举一个示例列表来更好地理解这一点:

nums = list(range(10)) #[0,1, 2, 3, 4, 5, 6, 7, 8, 9]

现在让我们将该函数与我们学到的语法一起使用。islice

仅使用停止值

让我们只指定停止索引:

from itertools import islice# only stop
sliced_nums = islice(nums, 5)
print(list(sliced_nums)) 

这是输出:

Output >>> [0, 1, 2, 3, 4]

使用开始值和停止值

在这里,我们同时使用开始值和停止值:

# start and stop
sliced_nums = islice(nums, 2, 7)
print(list(sliced_nums))

切片从索引 2 开始,一直延伸到但不包括索引 7:

Output >>> [2, 3, 4, 5, 6]

使用开始值、停止值和步长值

当我们使用开始值、停止值和步长值时:

# using start, stop, and step
sliced_nums = islice(nums, 2, 8, 2)
print(list(sliced_nums))  

我们得到一个从索引 2 开始的切片,一直延伸到但不包括索引 8,步长为 2(每隔一个元素返回一次)。

Output >>> [2, 4, 6]

总结

我希望本教程能帮助您了解迭代工具过滤器函数的基础知识。您已经看到了一些简单的示例,以更好地理解这些函数的工作原理。接下来,您可以了解生成器生成器函数和生成器表达式如何作为高效的 python 迭代器工作。

原文链接:4 个你可能不知道的 Python 迭代工具过滤器函数 (mvrlink.com)

http://www.yayakq.cn/news/160960/

相关文章:

  • 深圳产品型网站建设深圳app开发公司大概价格
  • 嘉兴学网站建设网页设计与制作教程电子版pdf
  • 大学生做推送的网站完整的软件开发流程
  • 射洪网站建设房地产公司的网站建设方案
  • e福州app官方网站张家界网站制作
  • 筑巢网站建设怎么样网站推广优化平台
  • 新手学做免费网站软件wordpress win7
  • 企业模板网站vueasp.net 网站修改发布
  • 商丘市做1企业网站的公司1688黄页网品种大全2024
  • 免费建立自己的网站空间国外网站开发技术现状
  • 网站需要多少钱淮南网站制作
  • 网站建设属于高新技术收入吗vi企业设计
  • 外贸电商网站开发查看网站流量的工具
  • 如何开办网站网站备案安全责任书是谁盖章
  • 校史网站开发技术网站的毕业设计怎么做
  • 台州网站优化国外看新闻app推荐
  • 盐山联通大厦 网站建设做服装外单的网站
  • 购物网站制作怎么做东莞网页设计与制作
  • ps如何做网站轮播图动物自己做的网站
  • 网站模板套用湖南岚鸿什么叫网站空间
  • 企业免费网站建设模板wordpress主题git
  • 如何制作网站站点ftp网站后台
  • 网站建设续费的回访话术男生短期培训就业
  • 国企网站建设需要注意鄱阳网站建设多少钱
  • 怎么做类似淘宝网站吗如何统计网站pv
  • 外国电商设计网站有哪些问题青岛网站建设哪里好
  • 旅行网站模板哪里有创建网站的
  • 网站建设功能表太原招聘网站开发
  • 营销型网站建设价值招人制作网站
  • 电子商务网站设计岗位主要是把网站做静态化