【问题标题】:Is there a way to write two "in" statements in one?有没有办法在一个中写两个“in”语句?
【发布时间】: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")

有什么建议吗?

【问题讨论】:

    标签: python python-3.x logic


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-03
        • 2011-10-14
        • 2022-12-07
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多