Python 如果行列表中的任何行包含子字符串

Python 如果行列表中的任何行包含子字符串,python,list,Python,List,Python 3.7.3 我有一个行列表,我想要一个语句来测试任何一行是否包含一个值: >>> data=[["red blue green yellow"],["peter ann jack beatrice"]] >>> "ann" in data False 我希望这是真的 是否有一个没有显式迭代的单语句测试,它将为ann或两个列表中的任何单个值返回True 你需要更深入 'ann' in ' '.join(sum(data,[])) 目前,您

Python 3.7.3

我有一个行列表,我想要一个语句来测试任何一行是否包含一个值:

 >>> data=[["red blue green yellow"],["peter ann jack beatrice"]]
 >>> "ann" in data
 False
我希望这是真的

是否有一个没有显式迭代的单语句测试,它将为ann或两个列表中的任何单个值返回True

你需要更深入

'ann' in ' '.join(sum(data,[]))
目前,您正在检查父列表中是否有任何元素与字符串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

可能重复@Sherzod是的。我喜欢斯文的解决方案。如果你觉得我的评论有帮助的话,你可以对它进行投票:这使用了一个显式的迭代——我想避免这种情况。寻找一行。一行仍然执行“显式迭代”。相信我,可读性比把所有东西塞进一堆要重要得多。一旦你写了这个函数,你只需要一行代码就可以调用它了。哦,我相信在很多情况下,可读性是最重要的,但我喜欢探索这种语言。“可读性”是主观的,是吗?可读性只有在一定程度上是主观的。但在这种情况下,我更担心的是虫子。采取公认的解决方案——有很多方法可以获得误报。只有你才能知道他们是否会咬你,但我个人不会冒险。这是可行的,但我不知道为什么。“总数”真让我讨厌。你能解释一下吗?我可以查一下,我知道,但像我这样的人在这里看到你的推理会很有趣。@StephenBoston sumdata,[]是将嵌套列表展平,它作为数据[0]+数据[1]+…sum将所有字符串连接在一起,这意味着如果你有一个[鱼,蛋糕]列表,那么shca将返回true。不要为了把它塞进一行而牺牲准确性和可读性。它只会给您带来bug,特别是当您不理解您在报告中所说的代码时comment@Shadow谢谢,我应该用空格分隔列表中的项目。