如何检查元素是否存在于第二个子列表中?
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
循环。
如果我有这样的列表:
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
循环。