2次元配列の要素の和を求めたくなった。
ただし、numpyが使えない環境で。
参考: numpyを使う場合
import numpy as np
# [0, 1]の100×100の配列
twod_array = np.random.randint(0, 2, (100, 100))
result = twod_array.sum()
print(result)
2重ループ
あまりこんなことはしないと思うが……
import random
# [0, 1]の100×100の配列
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]
result = 0
for row in twod_array:
for element in row:
result += element
print(result)
sum関数
for文は残るけど。
import random
# [0, 1]の100×100の配列
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]
result = 0
for row in twod_array:
result += sum(row)
print(result)
mapとsum関数
for文を使わずワンライナーでもかける。
import random
# [0, 1]の100×100の配列
twod_array = [[random.randint(0, 1) for _ in range(100)] for _ in range(100)]
result = sum(map(sum, twod_array))
print(result)
結論
- 実行速度は numpy < (sum+map) = (sum+for) < (for*2) みたいな感じだった。
- numpyが使えるならnumpyを使おう。