有没有办法在一个中写两个“in”语句?

Posted

技术标签:

【中文标题】有没有办法在一个中写两个“in”语句?【英文标题】:Is there a way to write two "in" statements in one? 【发布时间】:2021-11-07 14:37:45 【问题描述】:

有没有短版的

n = [5, 3, 17]
if 5 in n and 17 in n:
    print("YES")

类似的东西似乎不起作用

if (5 and 17) in n:
   print("YES")

有什么建议吗?

【问题讨论】:

【参考方案1】:

我认为 Python 中没有完全类似的东西。我能想到的最接近的是set 操作,例如。 set.issubset:

>>> n = [5, 3, 17]
>>> (5, 17).issubset(n)
True

【讨论】:

我正要为你的好方法投票(并评论它的效率要低得多:p),所以在这里获得 +1 ;) @mozway 谢谢!写完之后,看到你的答案,我意识到了这一点。所以赞成你的并删除了我的。虽然我没有测试我的 df 是否真的很大,但不确定它是否会发生很大变化。 对于字典中的 10k 项,系数约为 500(19ms vs 10s);) @mozway 很高兴我删除了那个蜗牛 xD 感谢您的基准测试:)【参考方案2】:

你可以改用这样的东西:

n = [5,3,7]

if all(item in n for item in [5,7]):
    print("YES")

【讨论】:

@JonSG 不,再次仔细运行代码:)【参考方案3】:
n = [5, 3, 17]
if set(n) & set((5, 7)):  # Using & which is intersect operator for two sets
    print("YES")

【讨论】:

【参考方案4】:

另一种方式:

n = [5,3,17]
search = [5,17]

found = [x for x in search if x in n]
print("Count", len(found))
print("Matched", found)

【讨论】:

以上是关于有没有办法在一个中写两个“in”语句?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 SQL 中将 EXCEPT 语句重写为 NOT IN 语句?

access中使用sql语句not in效率太低,有没有效率高的办法啊?

有没有办法组合这两个 MySQL 语句?

有没有办法获得超过 1 个值?

delphi中写SQL语句

Case 语句中的 select 语句