Pythonでリストを別のリストに挿入する方法:append()とextend()の違いを徹底解説
はじめに
Pythonでは、あるリストを別のリストに挿入(追加)する方法がいくつかあります。代表的なのが append() メソッドと extend() メソッドです。この2つは似たような用途で使われますが、動作に重要な違いがあるため、しっかり理解しておくことが大切です。
append()メソッドとは
append() は、引数として渡したオブジェクトを「1つの要素」としてリストの末尾に追加します。そのため、リストを渡すと、そのリスト全体がネストされた形(入れ子構造)で追加されます。
extend()メソッドとは
extend() は、引数として渡したイテラブル(リストなど)の各要素を個別に取り出し、元のリストの末尾に順番に追加します。リストを渡した場合、要素が展開されて結合される点が append() との大きな違いです。
サンプルコード
# append の場合
first_list = [1, 2, 3, 4, 5]
second_list = [6, 7, 8, 9, 10]
first_list.append(second_list)
# append の結果を表示
print("appendを使った結果 : " + str(first_list))
# extend の場合
third_list = [11, 12, 13, 14, 15]
fourth_list = [16, 17, 18, 19, 20]
third_list.extend(fourth_list)
# extend の結果を表示
print("extendを使った結果 : " + str(third_list))
実行結果
appendを使った結果 : [1, 2, 3, 4, 5, [6, 7, 8, 9, 10]] extendを使った結果 : [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
結果の解説
append() を使った場合、[6, 7, 8, 9, 10] が「1つの要素」として追加されているため、リストの中にリストが入った入れ子構造になっています。一方、extend() を使った場合は、各要素が個別に追加され、フラットな1つのリストに結合されています。
使い分けのポイント
- append():リストをそのまま1つの要素として追加したい場合(入れ子構造を作りたい場合)に使用します。
- extend():2つのリストを結合して1つのリストにしたい場合に使用します。なお、
list1 + list2やlist1 += list2といった演算子による結合も同様の結果が得られます。
まとめ
リストへの挿入には append() と extend() の2つの方法があります。append() はオブジェクトをそのまま1要素として追加するのに対し、extend() はイテラブルの要素を個別に展開して追加します。入れ子構造が必要なのか、それとも単純な結合なのか、目的に応じて適切なメソッドを選びましょう。
-
Pythonでソート済みリストの順序を保ったまま要素を挿入する2つの方法
本記事では、ソート済みのリストに対して、その並び順を崩すことなく新しい要素を挿入する方法について解説します。 問題文 リストが与えられたとき、既存のソート順を維持したまま、指定した要素を適切な位置に挿入する必要があります。 この問題を解くには、主に以下の2つのアプローチがあります。 アプローチ1:線形探索による力まかせ法(ブルートフォース) まず、挿入すべき位置をリストの先頭から順に走査して見つけ出し、そこへ要素を挿入するというシンプルな方法です。挿入する要素より大きい値が最初に現れた位置に、新しい要素を差し込みます。 コード例 n: index = i
-
Pythonでリストの指定した位置にオブジェクトを挿入する方法
Pythonのリストにおいて、指定した位置(インデックス)に要素を挿入したい場合は、insert(pos, obj) メソッドを使用します。このメソッドは挿入したいオブジェクトを1つ引数として受け取り、メソッドを呼び出したリストの pos 番目の位置にそのオブジェクトを追加します。既存の要素は後ろにずらされるため、元のデータが失われることはありません。例my_list = [2, 3, 1, -4, -1, -4] my_list.insert(1, 0) print(my_list)実行結果上記のコードを実行すると、次のような出力が得られます。[2, 0, 3, 1, -4, -1, -4]