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

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


ids = [123,321,111,333]

follow_num = [111, 222]


if any(ids == follow_num):

    print(ids)

尽管我尽了最大的努力,并且上面有很多版本,但我无法让它工作。有人可以详细说明我在这里出错的地方吗?


料青山看我应如是
浏览 160回答 3
3回答

慕尼黑的夜晚无繁华

或者,您可以比较两组:ids = [123, 321, 111, 333]follow_num = [111, 222]matches = list(set(ids) & set(follow_num))print(matches)# [111]print(bool(matches))# True

ABOUTYOU

您必须遍历中的每个值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 = set(follow_num)。这是更快,因为set有一个O(1)在运行,较列出了计算in中O(N)。

萧十郎

>>> ids = [123,321,111,333]>>> follow_num = [111, 222]>>> if set(ids).intersection(follow_num): ...   print(ids)... [123, 321, 111, 333]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python