lambda 演算と関数

lambda で演算する方

import numpy
import time

f = lambda x: x**2

def test0(n):
     """空"""
     t1=time.time()
     t2=time.time()
     print t2-t1

def test1(n):
     """内包表現"""
     t1=time.time()
     a=[ f(x) for x in range(n) ]
     t2=time.time()
     print t2-t1

def test2(n):
     """append"""
     t1=time.time()
     a = []
     for x in range(n):
             a.append(f(x))
     t2=time.time()
     print t2-t1

def do(n):
     """テストプログラム"""
     test0(n)
     test1(n)
     test2(n)
     test0(n)
     test2(n)
     test1(n)
     test0(n)

if __name__=="__main__":
     do(int(1e7))
9.53674316406e-07
4.37765097618
5.39173102379
9.53674316406e-07
4.00302004814
3.27852892876
2.14576721191e-06

関数で演算する方

import numpy
import time

def f(x):
     return x**2

def test0(n):
     """空"""
     t1=time.time()
     t2=time.time()
     print t2-t1

def test1(n):
     """内包表現"""
     t1=time.time()
     a=[ f(x) for x in range(n) ]
     t2=time.time()
     print t2-t1

def test2(n):
     """append"""
     t1=time.time()
     a = []
     for x in range(n):
             a.append(f(x))
     t2=time.time()
     print t2-t1

def do(n):
     """テストプログラム"""
     test0(n)
     test1(n)
     test2(n)
     test0(n)
     test2(n)
     test1(n)
     test0(n)

if __name__=="__main__":
     do(int(1e7))
9.53674316406e-07
3.26168203354
3.9990170002
1.90734863281e-06
4.01373195648
3.26440596581
1.90734863281e-06

lambda より関数の方が速いのかー.知らなかった.