【问题标题】:Is there a faster way to check for a bunch of things in a list/set? [duplicate]有没有更快的方法来检查列表/集中的一堆东西? [复制]
【发布时间】:2019-03-07 03:42:54
【问题描述】:

我必须检查数字 1 到 9 是否在列表/集合中

if 1 in factor_numbers and 2 in factor_numbers and 3 in factor_numbers and 4 in factor_numbers and 5 in factor_numbers and 6 in factor_numbers and 7 in factor_numbers and 8 in factor_numbers and 9 in factor_numbers and 0 in factor_numbers:

必须有一种更有效的方法来进行这项检查吗?这些数字不一定彼此相邻

【问题讨论】:

  • 其他可能的元素是什么?
  • 随机整数
  • all(n in factor_numbers for n in numbers) ?还是只写一个循环?
  • @juanpa.arrivillaga 哪种方式效率更高?
  • 可能是这样,但我对此表示怀疑。我在这里看到的证据很少。也许OP可以在他们提供minimal reproducible example时进行澄清

标签: python list if-statement set


【解决方案1】:

您可以使用为集合定义的方法set.issubset,这样:

set([1, 2, 3, 4, 5, 6, 7, 8, 9]).issubset(set(factor_numbers))

【讨论】:

  • 我可能误解了你的问题,也可能没有。你能提供一个具体的例子来说明什么不是你想要的吗?
  • 我写错了,没有包含0,并删除了我的评论。这非常有效。
  • 太好了,感谢您的澄清。
  • set.issubset 与简单的
  • 主要优点是清晰。从某种意义上说,查看代码,issubset 的含义很明显。相反,<= 可能意味着您必须阅读文档才能了解代码在做什么。在引擎盖下,两者是等价的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 2023-03-17
相关资源
最近更新 更多