python で内包表現

  • pythonに内包表現があり、速いという(たとえばこちら)
  • ちょっと使ってみる
  • 辺の長さが自然数の三角形を列挙する
n = [i for i in range(1,10**2,1)]
triangles = [(a, b,c) for a in n for b in n for c in n if (a + b > c) & (b + c > a) & (a + c > b) ]
triangles
  • ついでに、jupyter notebookで速度測定する方法も書いておく
%%timeit
triangles = [(a, b,c) for a in n for b in n for c in n if (a + b > c) & (b + c > a) & (a + c > b) ]
397 ms ± 2.43 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)