如何检查一个迭代中的哪些元素也在另一个中?

And*_*ndi 0 python

我有两个长度可能不同的元组:

t1 = ('abc', 'def', 'ghi', 'jkl')
t2 = ('def', 'jkl')
Run Code Online (Sandbox Code Playgroud)

我需要得到一个包含导致元组bool,拿着True如果值t1是在t2False其他。

我正在寻找以下结果:

result = (False, True, False, True)
Run Code Online (Sandbox Code Playgroud)

Alt*_*eos 8

使用生成器表达式和元组构造函数,您可以迭代t1并检查每个元素是否在t2

result = tuple(element in t2 for element in t1)
Run Code Online (Sandbox Code Playgroud)

如果t2是一个大元组,将其转换为set第一个可能会更快。

s2 = set(t2)
result = tuple(element in s2 for element in t1)
Run Code Online (Sandbox Code Playgroud)