这个输入如何与 Python 的‘any’函数一起工作?[重复]

2025-03-11 08:54:00
admin
原创
53
摘要:问题描述:在 的 Python 文档页面中any,该函数的等效代码any()如下:def any(iterable): for element in iterable: if element: return True return False 如果以这种...

问题描述:

在 的 Python 文档页面中any,该函数的等效代码any()如下:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

如果以这种形式调用它,这个函数怎么知道我想要测试什么元素?

any(x > 0 for x in list)

从函数定义中,我所能看到的就是我正在传递一个可迭代对象。循环如何for知道我在寻找某些东西> 0


解决方案 1:

如果您使用,any(lst)则会看到它lst是可迭代的,它是一些项目的列表。如果它包含[0, False, '', 0.0, [], {}, None](所有项目的布尔值均为False),则将any(lst)False。如果lst还包含以下任何一项[-1, True, "X", 0.00001](所有项目的计算结果均为True),则将any(lst)True

在您发布的代码中,x > 0 for x in lst这是一种不同类型的可迭代对象,称为生成器表达式。在将生成器表达式添加到 Python 之前,您将创建一个列表推导式,它看起来非常相似,但周围有[][x > 0 for x in lst]。从lst包含的[-1, -2, 10, -4, 20],您将获得这个理解列表[False, False, True, False, True]。然后,这个内部值将传递给any函数,该函数将返回True,因为至少有一个True值。

但是使用生成器表达式True(s),Python 不再需要创建和的内部列表,当函数迭代生成器表达式一次生成的一个值时,False(s)将生成值。并且,由于 是短路,它会在看到第一个值时立即停止迭代。如果您使用类似的东西创建(或者如果您使用的是Python2.x ),这将特别方便。即使这个表达式将生成超过十亿个条目,当它到达 时,只需要到第三个条目,它会对 进行求值,因此可以返回。any`anyTruelstlst = range(-1,int(1e9))xrangeany1Truex>0anyTrue`

如果您创建了列表推导式,Python 首先必须在内存中创建十亿元素列表,然后将其传递给any。但是通过使用生成器表达式,只要看到或值,您就可以让 Python 的内置函数(如any和)提前跳出。all`True`False

解决方案 2:

>>> names = ['King', 'Queen', 'Joker']
>>> any(n in 'King and john' for n in names)
True

>>> all(n in 'King and Queen' for n in names)
False

它只是将几行代码简化为一行。您不必编写如下冗长的代码:

for n in names:
    if n in 'King and john':
       print True
    else:
       print False

解决方案 3:

(x > 0 for x in list)在该函数调用中创建一个生成器表达式,例如

>>> nums = [1, 2, -1, 9, -5]
>>> genexp = (x > 0 for x in nums)
>>> for x in genexp:
        print x


True
True
False
True
False

在遇到第一个求值的对象时使用any和短路True

解决方案 4:

这是因为可迭代对象是

(x > 0 for x in list)

请注意,x > 0返回TrueFalse,因此您有一个布尔值的可迭代。

解决方案 5:

简单地说,any() 可以完成这样的工作:根据条件,即使在列表中遇到一个满足条件的值,它也返回 true,否则返回 false。

list = [2,-3,-4,5,6]

a = any(x>0 for x in lst)

print a:
True


list = [2,3,4,5,6,7]

a = any(x<0 for x in lst)

print a:
False
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2793  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1710  
  PLM系统在企业项目管理中扮演着至关重要的角色,尤其是在项目采购管理方面,能够通过一系列策略提升采购效率、降低成本并保障质量。通过深入解析相关策略,企业可以更好地利用PLM系统优化采购流程,实现项目的顺利推进与整体目标的达成。需求精准定义策略在项目采购中,明确需求是首要任务。PLM系统可助力企业精准定义采购需求。首先,...
plm是什么意思   0  
  在企业的运营过程中,跨部门数据共享一直是一个关键且颇具挑战的问题。不同部门之间由于业务差异、系统不兼容等多种因素,常常形成信息孤岛,导致数据无法顺畅流通,影响企业整体的决策效率和协同效果。而 PLM 系统作为一种先进的管理工具,为解决这一难题提供了有效的途径。通过其一系列强大的核心功能,能够打破部门之间的数据壁垒,实现...
plm系统   0  
  PLM(产品生命周期管理)项目涉及产品从概念设计到退役的全流程管理,其复杂性和长期性要求高效的项目进度管理工具。甘特图作为一种直观且实用的项目进度可视化工具,在PLM项目中发挥着关键作用。通过甘特图,项目团队成员能够清晰地了解项目任务的时间安排、进度状态以及各项任务之间的关系,从而更好地协调工作、分配资源,确保项目按计...
plm流程是什么   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用