为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2021-11-02 14:57:41
在 Python 中,我试图创建一个 if 语句,如果一个数组的一个变量存在于另一个列表或数组中的某处,则该语句继续执行。这是我的基本代码,它应该检查其中是否ids存在任何值follow_num:ids = [123,321,111,333]follow_num = [111, 222]if any(ids == follow_num):    print(ids)尽管我尽了最大的努力,并且上面有很多版本,但我无法让它工作。有人可以详细说明我在这里出错的地方吗?
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

或者,您可以比较两组:


ids = [123, 321, 111, 333]

follow_num = [111, 222]


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


print(matches)

# [111]


print(bool(matches))

# True


查看完整回答
反对 回复 2021-11-02
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您必须遍历中的每个值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)。


查看完整回答
反对 回复 2021-11-02
?
萧十郎

TA贡献1815条经验 获得超13个赞

>>> ids = [123,321,111,333]

>>> follow_num = [111, 222]

>>> if set(ids).intersection(follow_num): 

...   print(ids)

... 

[123, 321, 111, 333]


查看完整回答
反对 回复 2021-11-02
  • 3 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信