l.__getitem__
более чем в два раза быстрее, и, поскольку это собственный метод объекта, я сомневаюсь, что вы можете победить его.
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=lambda i:l[i]', number=10**8)
17.013631199999963
>>> timeit('f(i)', 'l=[1,2,3]; i=1; f=l.__getitem__', number=10**8)
7.722098399999936