Python: 正确使用 any() 来检查一个数组的一个值是否存在于另一个数组中?

Python: Proper use of any() to check if one value of one array exists in another array?

在 Python 中,我试图创建一个 if 语句,如果一个数组的一个变量存在于另一个列表或数组中的某处,该语句将继续执行。这是我的基本代码,它应该检查 ids 中是否存在任何值 follow_num:

ids = [123,321,111,333]
follow_num = [111, 222]

if any(ids == follow_num):
    print(ids)

尽管我尽了最大的努力,以及上面的许多版本,我还是无法让它工作。有人可以详细说明我哪里出错了吗?

您必须遍历 ids 中的每个值并检查这些值中的 any 是否存在于 follow_num 中。将 any 与生成器理解结合使用:

if any(i in follow_num for i in ids):
    print(ids)

输出:

[123,321,111,333]

编辑:

如果您想打印任何匹配项 any() 不起作用,您必须使用 for 循环,因为 any() 计算整个列表。示例:

for i in ids:
    if i in follow_num: print(i)

请注意,您可以通过执行 follow_num = set(follow_num) 预先将 follow_num 转换为 set() 来加速这两个操作。与在 O(N).

中计算 in 的列表相比,这更快,因为 set 有一个 O(1) 在运行

或者您可以比较两组:

ids = [123, 321, 111, 333]
follow_num = [111, 222]

matches = list(set(ids) & set(follow_num))

print(matches)
# [111]

print(bool(matches))
# True
>>> ids = [123,321,111,333]
>>> follow_num = [111, 222]
>>> if set(ids).intersection(follow_num): 
...   print(ids)
... 
[123, 321, 111, 333]