如何检查一个迭代中的哪些元素也在另一个中?
我有两个长度可能不同的元组:
t1 = ('abc', 'def', 'ghi', 'jkl')
t2 = ('def', 'jkl')
我需要得到一个包含导致元组bool,拿着True如果值t1是在t2和False其他。
我正在寻找以下结果:
result = (False, True, False, True)
回答
使用生成器表达式和元组构造函数,您可以迭代t1并检查每个元素是否在t2:
result = tuple(element in t2 for element in t1)
如果t2是一个大元组,将其转换为set第一个可能会更快。
s2 = set(t2)
result = tuple(element in s2 for element in t1)