こんばんは。きわさです。
今回はpythonの配列についてです。
まず、以下のような0~9の配列があるとします。
test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
たとえば、この配列の各要素を2倍にした配列([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])がほしい場合どう書きますか?
test1 = [] for i in test: test1.append(i * 2)
と、書く人もいるかもしれません。
この場合は、以下のように書けます。
test1 = [i * 2 for i in test]
結果はどちらも、[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]となります。
次は、
配列の要素のうち、偶数は2倍、奇数は3倍にした配列([0, 3, 4, 9, 8, 15, 12, 21, 16, 27])を作りたい場合です。
そのまま書くと以下のようになるかもしれません。
test2 = [] for i in test: if (i % 2) == 0: test2.append(i * 2) else: test2.append(i * 3)
これも以下のように1行で書くことができます。
test2 = [i * 2 if i % 2 == 0 else i * 3 for i in test]
結果はどちらも[0, 3, 4, 9, 8, 15, 12, 21, 16, 27] となります。
次は、
奇数を除いた偶数のみの配列([0, 2, 4, 6, 8])にしたい場合です。
以下のように書きたいところですが、
test3 = [] for i in test: if (i % 2) == 0: test3.append(i)
これは以下のように書けます。
test3 = [i for i in test if i % 2 == 0]
結果はどちらも[0, 2, 4, 6, 8]になります。