`
edison0951
  • 浏览: 71768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

避免劣化的python代码

阅读更多

劣化代码:

s = []
for i in seq:
  s.append(foo(i))

 

推荐代码:

s = map(foo, seq)
更高效的代码
for i in itertools.imap(foo, seq):
  bar(i)

 劣化代码:

for i in xrange(len(seq1)):
  foo(seq1[i], seq2[i])

 推荐代码:

for i, j in zip(seq1, seq2)
  foo(i, j)
更高效:
for i, j in itertools.izip(seq1, seq2): 
  foo(i, j)

 劣化代码:

for i in xrange(len(seq)):
  foo(seq[i], i)

 推荐代码:

for i, item in enumerate(seq):
  foo(item, i)
 

 劣化代码:

s = seq[:]
s.reverse()
for i in s:
  foo(i)

推荐代码:

for i in reversed(s):
  foo(i)

 劣化代码:

def foo(seq, bgn, end): 
  i=0
  while(bgn < end): bar(seq[bgn], i )
    bgn += 1
    i += 1 
def foo(seq, bgn, end):
   tmp_seq = seq[bgn:end] 
   for i, item in enumerate(tmp_seq):
     bar(item, i)

 推荐代码:

def foo(seq, bgn, end):
  for begin, i in itertools.izip(xrange(bgn, end), itertools.counter()):
    bar(seq[begin], i)

  劣化代码:

for i in seq:
  if pred(i): 
    foo(i)

 推荐代码:

for i in itertools.ifilter(pred, seq):
  foo(i)

如果你又更好的方案,请继续补吧。

分享到:
评论
1 楼 edison0951 2010-12-02  
http://docs.python.org/dev/howto/index.html 这里又一些常用的python 文档。其中又一篇介绍关于python排序的功能和函数编程,很不错。
http://docs.python.org/dev/howto/sorting.html

相关推荐

    多目标遗传优化算法NSGAII求解微电网调度(Python&amp;Matlab)

    通过NSGA-II解决微电网调度问题,可以同时考虑这些目标,寻求一组非劣解,即帕累托最优解。 **NSGA-II算法基础** 1. **种群初始化**:随机生成初始种群,每个个体代表一种可能的解决方案。 2. **编码与解码**:个体...

    基于python的多目标粒子群算法设计与实现

    多目标粒子群优化(Multi-Objective Particle Swarm Optimization, MOPSO)是一种高效的全局优化算法,它能够同时处理多个优化目标,寻找一组非劣解,即帕累托最优解。本篇文章将深入探讨如何使用Python语言实现这一...

    结合熵权法的topsis方法的代码.zip

    这些代码可能包括数据预处理、标准化、熵权计算、距离计算和排序等功能模块。通过阅读和理解这些代码,可以更好地掌握如何在实际问题中应用结合熵权法的Topsis方法进行决策分析。对于学习和实践多准则决策分析的人员...

    变领域搜索算法python版本.rar

    要深入了解这个Python实现,你可以通过阅读源代码,理解各个组件的职责和相互作用,以及如何调整参数以适应特定的优化问题。同时,你也可以根据实际需求对现有代码进行修改或扩展,以实现更高效或适应性更强的VNS...

    群体智能优化算法(python)代码

    4. **模拟退火(SA, Simulated Annealing)**:灵感来源于金属冷却过程,允许在一定概率下接受较劣解以避免过早陷入局部最优。Python实现SA需设定初始温度、降温策略、接受准则等。 5. **深度学习与强化学习在群体...

    多目标优化NSGA3代码_nsga3_多目标优化_matlab_遗传算法

    NSGA3作为遗传算法的一个变种,通过非支配排序、拥挤距离等策略,能够有效地搜索多目标问题的帕累托前沿,提供一系列非劣解供决策者选择。 **NSGA3算法的核心概念**包括: 1. **非支配排序**:这是NSGA系列算法的...

    旅行商问题&java源码&python源码.zip

    2. 模拟退火算法:通过模拟物质冷却过程,允许在一定概率下接受较劣解,以跳出局部最优,寻找全局最优。 3. 遗传算法:通过模拟自然选择和遗传机制,生成一系列解决方案并逐步优化。 4. 动态规划:将问题分解为子...

    MOEAD-master_多目标分解算法_

    通过协同解决这些子问题,可以得到一组非劣解,即所谓的帕累托前沿(Pareto Front),它是多目标优化问题的理想解集。 ### MOEAD的组成部分 1. **种群初始化**:算法首先随机生成初始种群,每个个体代表一个潜在的...

    MO-ASMO 的分布式控制器,一种基于代理的多目标优化算法(python)

    dmosopt-master 文件夹很可能是该算法的源代码仓库,其中可能包含算法的详细说明、示例代码、测试用例以及用户指南等文档。对于开发者而言,通过阅读这些资料,可以了解算法的工作原理,学习如何配置和运行算法,...

    基于自然连通度的复杂网络抗毁性仿真优化研究 (2013年)

    - **组合优化模型**:本文提出了一种以自然连通度为目标函数的组合优化模型,旨在寻找在特定约束条件下能够最大化网络抗毁性的最优解。这里的约束条件通常涉及到网络的规模、成本等因素。 - **禁忌搜索算法**: - ...

    多目标粒子群优化算法代码.rar

    在"多目标粒子群优化算法代码"中,可能包含了MOPSO的Python或其他编程语言实现,包括以上提到的关键步骤和策略。通过分析这些代码,我们可以深入理解MOPSO的工作原理,并将其应用于实际问题的求解。同时,代码也可能...

    feature-selection_GA-SA-SAGA算法.rar

    在特征选择中,GA将特征集合视为个体的基因组,通过随机初始化、交叉、变异和选择等操作,模拟生物进化过程来逐步优化特征子集。交叉操作在两个个体间交换部分特征,变异操作随机改变个别特征,选择操作则依据特定...

    基于模拟退火的神经网络算法(matlab).zip

    在初始高温阶段,算法能够接受较劣的解,从而避免过早陷入局部最优;随着温度逐渐降低,算法逐渐倾向于接受更优的解,最终得到全局最优解。这种机制使得模拟退火在解决复杂优化问题时表现出较好的全局搜索能力。 在...

    遗传算法、禁忌搜索、模拟退火、蚁群算法

    模拟退火算法源自固体物理学中的退火过程,通过接受较劣解来跳出当前局部最优,以找到全局最优。在解决TSP时,算法会生成随机的相邻城市交换,根据温度和当前解的质量决定是否接受这一改变。随着温度逐渐降低,算法...

    开源项目-narqo-psqr.zip

    源代码通常包括算法的实现,可能有C、Python或其他编程语言的版本,便于不同背景的开发者使用。此外,可能还包括测试用例、示例数据以及文档,帮助用户理解和应用这个算法。 P-Square算法的工作原理大致如下: 1. ...

    数学建模模拟退火.rar

    5. 实践指导,如何在编程中实现模拟退火算法,可能涉及编程语言如Python、C++等的代码示例。 通过学习这个压缩包,不仅可以深入理解模拟退火算法,还能掌握如何将它应用于数学建模中,解决实际的优化问题。对于研究...

    启发式计算

    2. **模拟退火(Simulated Annealing)**:模拟退火算法灵感来源于金属冷却过程,它允许在搜索过程中接受较劣解以跳出局部最优。Python的`scipy.optimize.anneal`函数提供了一个简单的模拟退火实现。 3. **粒子群...

    negamax

    4. **剪枝逻辑**:在搜索过程中,判断当前节点的值是否越过Alpha和Beta边界,如果超过,则立即返回,避免不必要的计算。 5. **主循环**:在主程序中,初始化棋盘和搜索参数,然后调用Negamax搜索函数,得到最佳走法...

    基于遗传算法的多目标优化算法

    在本案例中,"chapter9"可能是一个包含详细教程或示例代码的文件,用户可以通过阅读和运行这些材料来学习如何使用特定工具箱来实现基于遗传算法的多目标优化。 总结来说,基于遗传算法的多目标优化算法是解决复杂...

Global site tag (gtag.js) - Google Analytics