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