小编典典

如果我不使用集合,如何检查一个列表中的值是否在带有if语句的单行代码的另一个列表中?

python

我正在尝试构造一个班轮,该班轮将检查一个列表中的任何值是否存在于另一列表中,如果存在或不存在,则返回True或False。

我最接近的是以下内容:

[i in list1 for i in list2]

这样做的问题是,它将遍历list1并输出一个true和False的列表,具体取决于list1中的项目是否存在于list2中。

然后,我可以做的就是遍历这个新创建的True和False列表,但是我不能在同一行中这样做。在这种情况下,我无法使用集合或导入任何函数,因为我在第三方软件中将其用作条件时,无法在条件中插入集合或使用函数。


阅读 184

收藏
2021-01-20

共1个答案

小编典典

您可以any(..)使用带有生成器表达式的内置函数:

any(e in list2 for e in list1)

因此,这将检查两个列表中是否至少存在一个元素。

但是请注意,这将导致最坏情况的 O(n 2)_算法。例如,如果元素是可哈希的,则可以使用set,我们可以使其成为 _O(n) 平均情况算法。

2021-01-20