我正在尝试构造一个班轮,该班轮将检查一个列表中的任何值是否存在于另一列表中,如果存在或不存在,则返回True或False。
我最接近的是以下内容:
[i in list1 for i in list2]
这样做的问题是,它将遍历list1并输出一个true和False的列表,具体取决于list1中的项目是否存在于list2中。
然后,我可以做的就是遍历这个新创建的True和False列表,但是我不能在同一行中这样做。在这种情况下,我无法使用集合或导入任何函数,因为我在第三方软件中将其用作条件时,无法在条件中插入集合或使用函数。
您可以any(..)使用带有生成器表达式的内置函数:
any(..)
any(e in list2 for e in list1)
因此,这将检查两个列表中是否至少存在一个元素。
但是请注意,这将导致最坏情况的 O(n 2)_算法。例如,如果元素是可哈希的,则可以使用set,我们可以使其成为 _O(n) 平均情况算法。
set