【问题标题】:Python - Is it better practice to check if a string is in a string, or list/tuplePython - 检查字符串是否在字符串或列表/元组中是更好的做法
【发布时间】:2020-08-06 03:25:59
【问题描述】:

我最近遇到了一件让我感到困惑的事情:我在比较一段代码时发现它们都检查了一个字符串是否在某个集合中不同。这就是我的意思:

第一个:

a = "+"
if a in "+-*/":
    print("yes")

第二个:

a = "+"
if a in ["+", "-", "*", "/"]:
    print("yes")

我应该使用哪一个?我的意思是哪个更pythonic?

【问题讨论】:

  • 查看Page 了解复杂性的完整列表。下面提供的答案实际上比O(1) 更快,而不是O(n)
  • @TheLazyScripter 好吧,构建这些数据结构中的任何一个来测试一次成员身份仍然是 O(N)

标签: python string list tuples


【解决方案1】:

时间复杂度是相同的,所以两者都可以工作,并且速度相同/非常相似。

如果你想要更好的东西

a = "+"
if a in {"+", "-", "*", "/"}:
    print("yes")

这将在集合中搜索“+”, 并且由于集合具有恒定的查找时间,它会比搜索列表或字符串略快

【讨论】:

  • 通常,您不想为此使用集合文字。尽管当前的 CPython 实现将其优化为缓存集。但你不想依赖它
猜你喜欢
  • 2013-01-09
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 2017-03-11
  • 2010-09-27
  • 2013-04-29
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多