Python 3.7.3
我有一个行列表,并且我想要一个语句来测试任何行中是否包含值:
>>> data=[["red blue green yellow"],["peter ann jack beatrice"]]
>>> "ann" in data
False
我希望这是真的。
是否存在一个没有显式迭代的语句测试,该语句将为“ ann”或两个列表中的任何单个值返回True。
答案 0 :(得分:1)
'ann' in ' '.join(sum(data,[]))
答案 1 :(得分:0)
您需要更进一步。
目前,您正在检查父列表中是否有任何元素与字符串“ ann”相等-事实并非如此。因此,您需要遍历每个元素并进行检查。
这是未经测试的递归示例,它将遍历任何列表以查找您的子字符串。它应该起作用,或者给您灵感以完成任务。
def check_for_substrings_in_list(substring, parent_list):
for data in parent_list:
if isinstance(data, list):
if check_for_substrings_in_list(substring, data):
return True
elif isinstance(data, string) and substring in data:
return True
return False