Python:通过使算法不那么复杂来改进这一点



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

这个示例版本的代码接受一个字符串列表,按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']

如何提高这个算法的效率?

gs = ["catan", "ticket to ride", "azul"]
tg = sorted(gs, key=len, reverse=True)

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

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

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

这也适用于自定义的"criteria函数":

def my_criteria_function(value):
return len(value) * value.count(" ")  # super secret sauce
...sort(key=my_criteria_function) # (or sorted(..., key=my_criteria_function)

相关内容

最新更新