有没有办法在一个中写两个“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 语句?