如何检查元素是否存在于第二个子列表中?

How to Check if Element exists in Second Sublist?

如果我有这样的列表:

L = [
           ['a', 'b'], 
           ['c', 'f'], 
           ['d', 'e']
       ]

我知道我可以检查是否'f' 以下列方式使用 any 包含在任何子列表中:

if any('f' in sublist for sublist in L) # True

但是我将如何搜索第二个子列表,即如果列表是按以下方式初始化的:

L = [
           [
               ['a', 'b'], 
               ['c', 'f'], 
               ['d', 'e']
           ], 
           [
               ['z', 'i', 'l'],
               ['k']
           ]
       ]

我试过像这样链接 for in 表达式:

if any('f' in second_sublist for second_sublist in sublist for sublist in L)

但是,这会崩溃,因为 name 'sublist' is not defined

首先将您的逻辑写成 常规 for 循环:

for first_sub in L:
    for second_sub in first_sub:
        if 'f' in second_sub:
            print('Match!')
            break

然后用相同顺序的 for 语句重写为生成器表达式:

any('f' in second_sub for first_sub in L for second_sub in first_sub)

如果您不需要知道 'f' 的位置,您也可以在这里利用 itertools

import itertools

any('f' in x for x in itertools.chain.from_iterable(l))

这将展平您的嵌套列表并分别评估每个列表。这里的好处是,如果你有三个嵌套列表,这个解决方案仍然可以运行,而不必继续编写 nest for 循环。