在另一个列表中按顺序查找列表元素,但不是连续的?(蟒蛇)



我试图找出一种更干净的(Pythonic(方法来判断一个列表中的元素是否存在于另一个列表中,按顺序但不连续。例如,我可能有以下列表:

list1 = ["I", "her"]
list2 = ["I", "hate", "her", "sometimes"]
list3 = ["her", "hat", "I", "found"]

在比较 list1 和 list2 时,我想返回True,因为"我"和"她"按该顺序存在于 list2 中,尽管不是连续的。 将 list1 与 list3 进行比较时将返回False,因为"her"和"I"未按正确的顺序出现。

我可以编写一系列循环和 if 语句来实现这一点,但我想知道是否有更简单的内置方法来做到这一点。我尝试使用 all(( 函数:

all(i in list2 for i in list1)

这可以查找 list1 中的所有元素是否存在于 list2 中,但不考虑排序。我也尝试过使用join:

" ".join(str(i) for i in list1) in list2

仅当 list1 中的元素在 list2 中是连续的时,这将仅返回True

关于更简单的方法的任何想法?

只需对集合使用交集运算符:

result = bool(set(list1) & set(list2))

如果只想计算有序对,请使用 zip。

result = any([el1 == el2 for el1, el2 in zip (list1, list2)])

最新更新