我刚刚开始自学Python,我想搜索一大堆字符串中的几个关键字。我尝试使用嵌套的if语句,但它很笨重但不起作用。
有更简单的方法吗?顺便说一句,我的字符串数组称为tmp
。
for i in range(0, len(idList)):
for j in range(0, len(tmp)):
if "apples" in tmp[j]:
if "bananas" in tmp[j]:
if "peaches" in tmp[j]:
if "pears" in tmp[j]:
*Do something*
答案 0 :(得分:4)
您的代码相当于:
for i in range(0, len(idList)):
for j in range(0, len(tmp)):
if all(s in tmp[j] for s in ("apples", "bananas", "peaches", "pears")):
*Do something*
这使它更短。 all()
函数允许您检查多个条件,当所有条件都为真时,此函数的计算结果为true。
答案 1 :(得分:0)
根据您所写的内容,听起来您正试图在tmp
列表中找到任何关键字,而不是在一个元素中找到每个 。如果是这样,那么您的代码应该是
for i in range(0, len(idList)):
for j in range(0, len(tmp)):
if "apples" in tmp[j]:
*Do something*
elif "bananas" in tmp[j]:
*Do something*
elif "peaches" in tmp[j]:
*Do something*
elif "pears" in tmp[j]:
*Do something*
所以你会在每个条件中做一些事情(不同或相同)。 如果"苹果"在列表中的当前元素中,然后执行某些操作。 或,如果"香蕉"在元素中,然后做其他事情。
要缩短代码,请查看any
:
如果iterable的任何元素为true,则返回
True
。如果iterable为空,则返回False
。相当于:def any(iterable): for element in iterable: if element: return True return False
这会使您的代码与Simeon的示例相似,但会将all
替换为any
。