python:内置函数的替代方法;任何;

python:内置函数的替代方法;任何;,python,python-2.4,Python,Python 2.4,我使用的是python 2.4,我需要使用python版本中没有的函数any 是否有一个函数或表达式可以用来替换它 我需要确定字符串列表中是否至少有一个元素在文本行中。任何函数都很容易重新实现 其思想就是迭代一个iterable,一旦找到truthy对象,就返回True;否则返回False 在不欺骗和偷看文档的情况下,这里是一个重新实现: def my_any(iterable): for it_element in iterable: if it_element:

我使用的是python 2.4,我需要使用python版本中没有的函数any

是否有一个函数或表达式可以用来替换它


我需要确定字符串列表中是否至少有一个元素在文本行中。

任何
函数都很容易重新实现

其思想就是迭代一个iterable,一旦找到truthy对象,就返回
True
;否则返回False

在不欺骗和偷看文档的情况下,这里是一个重新实现:

def my_any(iterable):
    for it_element in iterable:
        if it_element:
            return True
    return False
现在:

很简单,我的版本和医生的完全一样

关于如何使用它。。。
any
函数采用iterable。 它通常与列表或生成器表达式一起使用。 例如,如果要检查
'abcd'
的任何字符是否在
行中
字符串中:

any(it_character in line for it_character in 'abcd')

对于您的特定用例(“中断”是可选的):


文档本身有一个等价的版本:好的,谢谢。但我不知道如何使用它。我的列表中包含的字符串不是布尔值。现在是升级Python版本的时候了使用
grep
,这就是它的用途,而且速度非常快。谢谢@EricDuminil,我想不起来了。我会尝试一下,比较一下性能。谢谢,但我正在处理数百万条生产线,我一直在寻找一种不费时间的方法来完成这项工作;使用循环似乎不是最好的方法。我可能错了。@tsumey你的具体问题是关于
any
方法的,所以给你。现在,如果你想在一个大文件中找到一个pettern,你可能需要对它进行迭代,所以循环是必要的。没有神奇的函数会告诉你它在第125327行,没有迭代。谢谢,请看一下我对@Right leg的回答。“any”函数基本上是在执行循环,尽管它可能会被优化。在某种程度上,您必须查看列表中的每个字符串(至少在找到一个有效的字符串之前),因此有必要使用类似循环的方法。如果找到匹配项,休息可以让您提前退出。
any(it_character in line for it_character in 'abcd')
ans = False
for string in lst:
    if string in line: 
        ans = True
        break