リストの要素の追加と挿入

リストの要素の追加と挿入

リストの要素の追加と挿入

 リストの末尾にオブジェクトを追加する場合は list.append()、末尾に複数要素 (オブジェクトの中身) を追加する場合は list.extend()、任意の位置に要素を挿入する場合は list.insert() を使用します。

list.append()

 list.append(x) はリストの末尾にオブジェクト x を付け加えます。mylist.append(x) は参照代入 mylist[len(mylist):] = [x] と同じ操作です。

# APPEND-1

# リストを定義
animals = ["キリン", "カバ"]

# リストの末尾に"シマウマ"を追加
animals.append("シマウマ")

# 変更されたリストを表示
print(animals)
['キリン', 'カバ', 'シマウマ']

 追加できるオブジェクトは1つです。
 複数の文字列を追加しようとすると TypeError を送出します。

animals.append("サイ", "ゾウ")
TypeError: append() takes exactly one argument (2 given)

 複数要素をもつリストは1つのオブジェクトなので末尾に追加することはできます。しかし、その場合はリストの入れ子になります。

# APPEND-2

# リストの末尾にリストを追加
animals.append(["サイ", "ゾウ"])

# 変更されたリストを表示
print(animals)
['キリン', 'カバ', 'シマウマ', ['サイ', 'ゾウ']]

 特別な事情で入れ子リストを作成したいこともあるかもしれません。しかし、ほとんどの場合、このような実行結果は望まないはずです。複数要素をまとめて追加したいときは後述する list.extend() を使ってください。
 

list.extend()

 list.extend() はリストの末尾にイテラブルオブジェクトの要素を追加して、リストを拡張します。

# EXTEND-1

# リストを定義
animals = ["ライオン", "トラ"]

# リストの末尾に複数要素を追加
animals.extend(["ヒョウ", "チーター"])

# 変更されたリストを表示
print(animals)
['ライオン', 'トラ', 'ヒョウ', 'チーター']

 list.append() はオブジェクトそのものを追加するメソッドでしたが、list.extend() はオブジェクトの「中身」を追加します。したがって、タプルを渡しても同じ結果が得られます。

# EXTEND-2

# リストを定義
animals = ["ライオン", "トラ"]

# リストの末尾に複数要素を追加
animals.extend(("ヒョウ", "チーター"))

# 変更されたリストを表示
print(animals)
['ライオン', 'トラ', 'ヒョウ', 'チーター']

 

list.insert()

 list.insert(i,x) はインデックス i の位置に1つのオブジェクト x を挿入します。メソッド適用以前にインデックス i の位置にあった要素は i + 1 の位置に移動します。

# INSERT

# リストを定義
animals = ["コアラ", "カンガルー", "クスクス"]

# インデックス1の位置に文字列を挿入
animals.insert(1, "ウォンバット")

# 変更されたリストを表示
print(animals)
['コアラ', 'ウォンバット', 'カンガルー', 'クスクス']

 list.append() と同様に、挿入できるのは単独オブジェクトであり、複数の文字列を渡すことはできません。