リスト.append() / リスト.extend() / リスト.insert()
| 対応: | Python 2(2000) |
|---|
リストに要素を追加するメソッドです。末尾への追加・別リストの結合・任意の位置への挿入ができます。
構文
# リストの末尾に要素を1つ追加します(戻り値は None)。 リスト.append(要素) # 別のイテラブルの全要素をリストの末尾に追加します(戻り値は None)。 リスト.extend(イテラブル) # 指定したインデックスの位置に要素を挿入します(戻り値は None)。 リスト.insert(インデックス, 要素)
関数一覧
| メソッド | 概要 |
|---|---|
| list.append(x) | リストの末尾に要素 x を1つ追加します。リスト自体を渡すと、ネストされたリストとして追加されます。 |
| list.extend(iterable) | イテラブル(リスト・タプル・文字列など)の各要素をリストの末尾に追加します。元のリストが直接変更されます。 |
| list.insert(i, x) | インデックス i の位置に要素 x を挿入します。既存の要素は右にずれます。i に len(list) 以上の値を指定すると末尾に追加されます。 |
サンプルコード
sample_list_append.py
# append() でリストの末尾に要素を追加します。
team = ["八神庵", "草薙京"]
team.append("テリー・ボガード")
print(team) # ['八神庵', '草薙京', 'テリー・ボガード']
# append() はリストを丸ごと追加します(ネストに注意)。
more = ["ブルー・マリー", "ゲーニッツ"]
team.append(more) # リスト自体が1要素として追加されます。
print(team) # ['八神庵', '草薙京', 'テリー・ボガード', ['ブルー・マリー', 'ゲーニッツ']]
print(len(team)) # 4(要素数は4つ)
# extend() で別のリストの要素を個別に追加します。
team2 = ["八神庵", "草薙京"]
more2 = ["ブルー・マリー", "ゲーニッツ"]
team2.extend(more2)
print(team2) # ['八神庵', '草薙京', 'ブルー・マリー', 'ゲーニッツ']
print(len(team2)) # 4
# 文字列を extend() に渡すと1文字ずつ追加されます。
letters = ["a", "b"]
letters.extend("cde") # 文字列はイテラブルとして扱われます。
print(letters) # ['a', 'b', 'c', 'd', 'e']
# insert() で先頭に要素を追加します(インデックス 0)。
nums = [2, 3, 4]
nums.insert(0, 1)
print(nums) # [1, 2, 3, 4]
# insert() で中間に要素を挿入します。
nums.insert(2, 99)
print(nums) # [1, 2, 99, 3, 4]
# ループで要素を順番に追加する典型的な使い方です。
squares = []
for i in range(1, 6):
squares.append(i ** 2)
print(squares) # [1, 4, 9, 16, 25]
# + 演算子と extend() の違いです。
# + は新しいリストを返します(元のリストは変わりません)。
a = [1, 2, 3]
b = a + [4, 5]
print(a) # [1, 2, 3](変わっていません)
print(b) # [1, 2, 3, 4, 5](新しいリスト)
# extend() は元のリストを直接変更します。
a.extend([4, 5])
print(a) # [1, 2, 3, 4, 5]
python3 list_append.py ['八神庵', '草薙京', 'テリー・ボガード'] ['八神庵', '草薙京', 'テリー・ボガード', ['ブルー・マリー', 'ゲーニッツ']] 4 ['八神庵', '草薙京', 'ブルー・マリー', 'ゲーニッツ'] 4 ['a', 'b', 'c', 'd', 'e'] [1, 2, 3, 4] [1, 2, 99, 3, 4] [1, 4, 9, 16, 25] [1, 2, 3] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
概要
『append()』と『extend()』は似ていますが、渡した引数の扱いが異なります。リストを渡すと、『append()』はリスト全体を1要素としてネストしますが、『extend()』はリストの中身を1要素ずつ展開して追加します。リストを個別の要素として結合したい場合は『extend()』を使ってください。
『insert()』はリストの先頭(インデックス0)や中間に要素を追加したい場合に使います。ただし、先頭への挿入はリスト全体をずらす処理が必要なため、大きなリストではコストが高くなります。先頭への追加が多い場合は『collections.deque』の『appendleft()』を検討してください。
これらのメソッドの戻り値はすべて『None』です。『new_list = my_list.append(x)』のように代入すると、new_list は None になります。要素の削除については『リスト.pop() / リスト.remove()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。