Pythonではリストの中で
様々な処理を内包することができます
元のリストを2倍する様な処理を考えた場合
(1から5までの数値を倍にしてリストに追加)
for文ではこのようになりますが
リスト内包表記で記述するともっと簡潔にできます
リスト作成の条件にfor文を使って
リストを作成し、結果は同じでも記述が楽です
さらにif文も追加します
(1から10までの偶数を
2倍の数値にしてリストに追加する)
この様な条件も次のようになります
ちなみに似た様な書き方でラムダ式というのがありますが
今回は割愛し後述します
前回の九九も
リスト内表記で簡潔に記述することができます
(windowsの場合は \ を ¥ に変えてください)
二重for文の結果(i * j)をjoinで連結し
\n をjoinして改行しています
最初のループが終わった時に改行されるようにしている所に
注意しましょう
ちなみにリスト内包表記は
速度面でも有利なようです
下記は1万回ループ処理をした結果を測ったものです
%%timeit は速度を測れます
リスト内包表記は速度面でも有利なため
覚えておくと便利です
様々な処理を内包することができます
元のリストを2倍する様な処理を考えた場合
(1から5までの数値を倍にしてリストに追加)
dataList = [1,2,3,4,5] newData = [] for d in dataList: newData.append(d * 2) print(newData)
[2, 4, 6, 8, 10]
for文ではこのようになりますが
リスト内包表記で記述するともっと簡潔にできます
dataList = [1,2,3,4,5] newData = [d * 2 for d in dataList] print(newData)
[2, 4, 6, 8, 10]
リスト作成の条件にfor文を使って
リストを作成し、結果は同じでも記述が楽です
さらにif文も追加します
(1から10までの偶数を
2倍の数値にしてリストに追加する)
dataList = range(1,11)
newData = []
for d in dataList:
if d % 2 == 0:
newData.append(d * 2)
print(newData)
[4, 8, 12, 16, 20]
この様な条件も次のようになります
dataList = range(1,11) newData = [d * 2 for d in dataList if d % 2 == 0] print(newData)
[4, 8, 12, 16, 20]
ちなみに似た様な書き方でラムダ式というのがありますが
今回は割愛し後述します
前回の九九も
リスト内表記で簡潔に記述することができます
print ('\n'.join([''.join(['%3d'%(i*j) for i in range(1,10)]) for j in range(1,10)]))
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
(windowsの場合は \ を ¥ に変えてください)
二重for文の結果(i * j)をjoinで連結し
\n をjoinして改行しています
最初のループが終わった時に改行されるようにしている所に
注意しましょう
ちなみにリスト内包表記は
速度面でも有利なようです
下記は1万回ループ処理をした結果を測ったものです
%%timeit
e_1 = []
for i in range(10000):
e_1.append(i)
1000 loops, best of 3: 881 µs per loop
%%timeit e_1= [i for i in range(10000)]
1000 loops, best of 3: 367 µs per loop
%%timeit は速度を測れます
リスト内包表記は速度面でも有利なため
覚えておくと便利です

コメントする