裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Python のリスト内包表記について

2021年02月15日 | ブログラミング

リスト内包表記って,速くもなんともないようです。むしろ遅い。
「1行で簡単に書ける」なんて言葉にだまされて,計算時間が掛かってしまっては本末転倒です。

一重ループ

def a1(n):
  s = 0
  for i in range(1, n+1):
      s += 1/i
  return s

def b1(n):
  return sum([ 1 / i for i in range(1, n+1)])

Python  n=10**6  n=10**7  n=10**8  n=10**9
    a1  0.080    0.840     8.395     83.437
    b1  0.104    1.030    10.314   1103.242

n=10**9 のときの b1 は,ガーベージ・コレクションでもが働いているのか?,計算時間が不定

二重ループ

def a2(n):
  s = 0
  for i in range(1, n+1):
    for j in range(1, n+1):
      s += i/j
  return s

def b2(n):
  return sum([ i / j for i in range(1, n+1) for j in range(1, n+1)])

Python  n=10**3  n=10**4  n=10**5  n=10**6
  a2   0.081     8.217 
  b2   0.099    10.172   

n が 10**5 以上では,これまたガーベージ・コレクションの影響か,終わりそうにないので中止

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村