【问题标题】:Python: Improve this by making the algorithm less complexPython:通过降低算法的复杂性来改进这一点
【发布时间】:2023-01-05 01:18:03
【问题描述】:

我有一个工作代码块,但似乎应该有一个更有效的算法,大概是循环更少或使用库/模块。

此代码示例版本采用字符串列表,按 len() 反向排序,然后构建一个新列表:

gs = ["catan", "ticket to ride", "azul"]

mg = {}
for i in range(len(gs)):
        mg[i] = len(gs[i])

popularity = {k: v for k, v in sorted(mg.items(), key=lambda v: v[1], reverse=True)}
tg = []
for game in popularity.keys():
        tg.append(gs[game])

生产代码不会将 mg[i] 设置为 len() 并且列表中的元素不一定是字符串,但算法以其他方式工作。

为此,相同的输出是:

['ticket to ride', 'catan', 'azul']

如何提高该算法的效率?

【问题讨论】:

  • 它应该是什么到底?
  • 按标准从最大数到最小数对列表进行排序。在这个例子中,数字是 len(mg[i])。我将添加样本输出

标签: python algorithm sorting


【解决方案1】:
gs = ["catan", "ticket to ride", "azul"]
tg = list(sorted(gs, key=len, reverse=True))

对于字符串列表具有相同的效果。

如果您想对列表进行排序以提高空间效率,

gs.sort(key=len, reverse=True)

【讨论】:

  • len 是相同的代码,生产不使用 len()
  • 没关系;然后将该函数替换为len
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2014-04-21
相关资源
最近更新 更多