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]
在 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]