python list concatenation efficiency

前端 未结 6 1378
陌清茗
陌清茗 2020-12-16 13:07

What is the most efficient way to concatenate two lists list_a and list_b when:

  • list_b items have to be placed before
6条回答
  •  时光取名叫无心
    2020-12-16 13:24

    Why not just timeit?

    import timeit
    
    create_data = """\
    list_a = range(10)
    list_b = range(10)
    """
    
    t1 = timeit.Timer(stmt=create_data + """\
    list_a = list_b + list_a
    """)
    
    t2 = timeit.Timer(create_data + """\
    for item in list_b:
        list_a.insert(0, item)
    """)
    
    t3 = timeit.Timer(create_data + """\
    for item in list_a:
        list_b.append(item)
    list_a = list_b
    """)
    
    t4 = timeit.Timer(create_data + """\
    list_a[0:0] = list_b
    """)
    
    for i, t in enumerate([t1,t2,t3,t4]):
        print i, "%.2f usec/pass" % (1000000 * t.timeit(number=100000)/100000)
    

    Result:

    0 0.73 usec/pass
    1 2.79 usec/pass
    2 1.66 usec/pass
    3 0.77 usec/pass

提交回复
热议问题