Kの備忘録(仮)

Python、VBA、Excelを中心に記事を投稿

Pythonのリストの加算と乗算の検証

はじめに

Pythonのリストでは、リスト同士の加算または乗算で要素の追加が可能です。

では、加算または乗算するとどうなるのか、検証したいと思います。

なお、Pythonではリスト同士の減算と除算はPythonではサポートしていません。試したところ、以下のエラーが出ました。

TypeError: unsupported operand type(s) for -: 'list' and 'list'

直訳: -: 'list'および 'list'のサポートされていないオペランドタイプ

ますは、リストの基本をおさらいします。

リストとは

データの集合で、変更可能かつ、順序がある反復可能なデータ型です。

リストの生成

リストを生成するには、以下のとおり変数に値を代入します。

変数 = [要素1, 要素2, 要素3, ・・・]

例)

list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(list_a)

出力結果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

では、基本をおさらいしたところで、さっそく検証してみましょう。

1次元リストの検証

1次元リスト同士でリストを加算

list_a = [1, 2]
list_b = [3, 4]

print(list_a + list_b)

出力結果:[1, 2, 3, 4]

単純に要素が追加されて、2つの1次元リストが1つになりました。

では、累算代入演算子を使って加算するとどうなるでしょうか。

list_a = [1, 2]
list_b = [3, 4]

list_a += list_b

print(list_a)

出力結果:[1, 2, 3, 4]

変数list_aに変数list_bの要素が追加されました。

1次元リストを乗算

list_a = [1, 2]*2

print(list_a)

出力結果:[1, 2, 1, 2]

変数list_aの要素が繰り返され、要素数が2倍になりました。

1次元リストの検証結果

加算または乗算することで、1次元リストの要素数が増えます。

2次元リストの検証

2次元リスト同士でリストを加算

list_a = [[1, 2]]
list_b = [[3, 4]]

print(list_a + list_b)

出力結果:[[1, 2], [3, 4]]

単純に要素が追加されて、2つの2次元リストが1つになりました。

では、累算代入演算子を使って加算するとどうなるでしょうか。

list_a = [[1, 2]]
list_b = [[3, 4]]

list_a += list_b

print(list_a)

出力結果:[[1, 2], [3, 4]]

こちらも単純に、変数list_aに変数list_bの要素が追加されました。

2次元リストを乗算

list_a = [[1, 2]]*2

print(list_a)

出力結果:[[1, 2], [1, 2]]

2次元リストのまま変数list_aの要素が繰り返され、要素数が2倍になりました。

2次元リストの検証結果

加算または乗算することで、2次元リストの要素数が2次元リストのまま増えます。

1次元リストと2次元リストの組み合わせの場合を検証

1次元リストと2次元リストを加算

list_a = [[1, 2]]
list_b = [3, 4]

print(list_a + list_b)

出力結果:[[1, 2], 3, 4]

リストは1つにまとまったものの、変数list_aの部分は2次元リスト、list_bの部分は1次元リストという結果になりました。

では、累算代入演算子を使って加算するとどうなるでしょうか。

list_a = [[1, 2]]
list_b = [3, 4]

list_a += list_b

print(list_a)

出力結果:[[1, 2], 3, 4]

元の変数list_aの部分は2次元リストで、追加されたlist_bの部分は1次元リストのままという結果になりました。

1次元リストと2次元リストの組み合わせの場合の検証結果

加算または乗算することで、リストを1つにすることはできますが、2次元リストの部分は2次元リストのまま、1次元リストの部分は1次元リストのまま要素数が増えます。

おわりに

検証結果は、おおよそ想定どおりでした。

ただ、リストの加算または乗算のパターンを知ることで、リストの操作がしやすくなるので、検証する価値はありました。

ほかのデータの集合でも検証すると面白いかもしれませんね!