python: return 如果列表中没有以 'p=' 开头的元素则为假

python: return False if there is not an element in a list starting with 'p='

有一个像

这样的列表
lst = ['hello', 'stack', 'overflow', 'friends']

我该怎么做:

if there is not an element in lst starting with 'p=' return False else return True

?

我在想:

for i in lst:
   if i.startswith('p=')
       return True

但我无法在循环中添加 return False,否则它会在第一个元素处消失。

好吧,让我们分两部分来做:

首先,您可以创建一个新列表,其中每个元素都是一个仅包含每个原始项目的前 3 个字符的字符串。您可以使用 map() 这样做:

newlist = list(map(lambda x: x[:2], lst))

然后,您只需要检查 "p=" 是否是这些元素之一。那将是: "p=" 在新列表中

将以上两者组合在一个函数中,使用一条语句应该如下所示:

def any_elem_starts_with_p_equals(lst):
    return 'p=' in list(map(lambda x: x[:2], lst))

这将测试 lst 的每个元素是否满足您的条件,然后计算这些结果的 or

any(x.startswith("p=") for x in lst)

试试这个

if len([e for e in lst if e.startwith("p=")])==0: return False

使用any条件检查列表中具有相同条件的所有元素:

lst = ['hello','p=15' ,'stack', 'overflow', 'friends']
return any(l.startswith("p=") for l in lst)

我建议使用迭代器,例如

output = next((True for x in lst if x.startswith('p=')),False)

这将为 first lst'p=' 开头的元素输出 True 然后停止搜索。如果走到尽头还没有找到'p=',则returnsFalse.

您可以使用内置方法 any to check it any element in the list starts with p=. Use string's startswith 方法来检查字符串的开头

>>> lst = ['hello', 'stack', 'overflow', 'friends']
>>> any(map(lambda x: x.startswith('p='),lst))
>>> False

一个应该导致 True

的例子
>>> lst = ['hello', 'p=stack', 'overflow', 'friends']
>>> any(map(lambda x: x.startswith('p='),lst))
>>> True