在列表头插入

import contextlib, time

@contextlib.contextmanager
def timer(msg):
	start = time.time()
	yield
	end = time.time()
	print("%s: %.02fms" % (msg, (end - start) * 1000))

with timer("insert"):
	A = []
	for i in range(100000):
		A.insert(0, i)

with timer("concat"):
	A = []
	for i in range(100000):
		A = [i] + A

with timer("slice"):
	A = []
	for i in range(100000):
		A[:0] = [i]
insert: 2633.50ms
concat: 12023.57ms
slice: 909.23ms

用slice的方式进行插入效率会比insert高很多

在列表尾插入

import contextlib, time

@contextlib.contextmanager
def timer(msg):
	start = time.time()
	yield
	end = time.time()
	print("%s: %.02fms" % (msg, (end - start) * 1000))

with timer("insert"):
	A = []
	for i in range(100000):
		A.insert(len(A), i)

with timer("concat"):
	A = []
	for i in range(100000):
		A = A + [i]

with timer("slice"):
	A = []
	for i in range(100000):
		A[-1:] = [i]
		
		
with timer("append"):
	A = []
	for i in range(100000):
		A.append(i)
insert: 19.58ms
concat: 12477.56ms
slice: 20.21ms
append: 10.67ms