如何检查具有多个子列表的列表中是否存在子字符串?

how to check if a substring exist in the list having several sublists?

假设我有一个列表,例如:

example_of_list = [[['aaaa'],['bbbb'],['cccc']], [['aabsd'],['fdwewd'],['dsfss']], [['sssss'],['ddddd'],['fffff']]]

我想检查 my_list 是否包含子字符串

sub_sting = 'aaa'

所以,在那种情况下,这将给出 'True',因为我在列表中有 'aaaa' 作为子列表。

如何查看这个东西?

我已经考虑过'in'或'str.contains',但似乎没有给出正确的回应。

您可以展平列表,然后遍历它。我从 What is the fastest way to flatten arbitrarily nested lists in Python?

得到了 flatten 函数
example_list = [[['aaaa'],['bbbb'],['cccc']], [['aabsd'],['fdwewd'],['dsfss']], [['sssss'],['ddddd'],['fffff']]]

def flatten(container):
    for i in container:
        if isinstance(i, (list,tuple)):
            for j in flatten(i):
                yield j
        else:
            yield i

new_list = list(flatten(example_list))
for elem in new_list:
    if ('aaa' in elem):
        print(elem)

这是一个可能的解决方案:

from itertools import chain

def contains(lst, substr):
    return any(substr in s for s in chain(*chain(*lst)))

您可以这样使用函数:

lst = [[['aaaa'], ['bbbb'], ['cccc']],
       [['aabsd'], ['fdwewd'], ['dsfss']],
       [['sssss'], ['ddddd'], ['fffff']]]
substr = "aaa"

print(contains(lst, substr)) # True