有效追加指数

时间:2016-10-27 14:33:19

标签: python tuples

我想为列表中的所有元组添加索引(通过创建新列表?)。我将举例说明我的尝试。我希望让操作更快,我感谢任何建议。

假设我正在进行某次迭代

L = [(1463270, 0.681), (1432058, 0.678), (537044, 0.677), (252225, 0.677), (1222737, 0.676)]

这里L包含5个元组,但实际上我在一个列表中处理了数十万个元组。

我希望为L中的每个元组添加索引

L = [(1463270, 0.681, 1), (1432058, 0.678, 2), (537044, 0.677, 3), (252225, 0.677, 4), (1222737, 0.676, 5)]

我需要计算最终得分的指数,我试过这个:

iL = []
for i in range(1,top+1):    ## top = 5 in my example
    iL.append(L[i-1] + (i,))

但我真的希望避免在top = 500,000并且拥有3,000,000次迭代时使用这样的循环。是否有方法可以使用地图来解决我的问题?

1 个答案:

答案 0 :(得分:4)

使用list comprehension比使用public void render(SpriteBatch sb) { sb.setProjectionMatrix(cam.combined); sb.begin(); String s = Integer.toString(SCORE); String h = Integer.toString(highscore); sb.draw(bg,cam.position.x - (cam.viewportWidth /2),0); sb.draw(groud,groundpos1.x,groundpos1.y); sb.draw(groud,groundpos2.x,groundpos2.y); font.draw(sb,s,cam.position.x-font.getSpaceWidth(),cam.position.y+(cam.viewportHeight /2)-39); high.draw(sb,h,cam.position.x- (cam.viewportWidth /2),cam.position.y+(cam.viewportHeight /2)-39); sb.end(); } 几乎肯定更快。 enumerate是向列表中的内容添加索引的好方法;您只需重新排序它可以获得所需输出的内容:

append

另外,请考虑:您是否需要使用索引存储此新列表?仅仅为几十万个元组分配内存需要时间。如果您仅仅使用这个新列表,您可能会考虑使用generator expression,它会懒惰地评估并且不需要分配内存。