我有一段代码需要在长列表上运行几个小时:
for elt in listCombinaisons_survivor:
effects = []
for idBadge in elt:
effects.append(dictBadges[idBadge]["Effect"])
cpt = Counter(effects)
for type_effect in cpt.keys():
cpt_effect = cpt[type_effect]
if cpt_effect > 3:
listCombinaisons_survivor.remove(elt)
break
我的listCombinaisons_survivor
包含了57种可能性([1,2,3,5,6,7],[1,2,3,5,6,8]...
)中6个徽章的所有可能组合。你知道吗
对于每个可能的组合,我在字典中选择与徽章ID匹配的“效果”(徽章ID 1=损坏),然后收集“效果”列表中的所有效果。你知道吗
然后我计算每种效果出现的次数,如果一个组合中有3个以上具有相同效果的徽章,我会删除这个组合。你知道吗
我有没有办法优化这个代码使它更快?你知道吗
我也试过了,但速度不快:
newlist_combinations = []
for elt in listCombinaisons_survivor:
effects = []
for idBadge in elt:
effects.append(dictBadges[idBadge]["Effect"])
cpt = Counter(effects)
for type_effect in cpt.keys():
cpt_effect = cpt[type_effect]
if cpt_effect > 3:
break
if not cpt_effect > 3:
newlist_combinations.append(elt)
我不想知道要花多少时间,但我想知道如何优化这段代码。你知道吗
整个代码可以在那里找到:
https://github.com/yirkkiller/Python/blob/master/badgesRepartition-NEW.py
谢谢!你知道吗
除了非常不清楚的变量名之外,您的算法基本上可以归结为:
另外,如果我看一下您的完整脚本,我建议您首先学习Python的基础知识。有很多事情可以做得更清楚、更有力、更简单
我建议:
相关问题 更多 >
编程相关推荐