append(リスト、配列)
このページでは豊富な例を用いてPythonの listクラス のappendの使い方を学ぶことができます。
listクラス
のメソッドの1つとしてappendがあります。list型のオブジェクトに対して、値を追加することが出来ます。
追加位置は対象のlistの最後尾になり、1度に追加できる値は1つになります。
異なるlistを拡張したい場合はappendでは実現不可であり、extend
や+
などを使用する必要があります。
TL;DR
基本
# appendで指定した要素は最後尾に追加される
list1 = ['Golang', 'JavaScript', 'HTML']
list1.append('Python')
print(list1)
==> ['Golang', 'JavaScript', 'HTML', 'Python']
# 異なる型もlistには追加することが可能
list2 = [1, 2, 3, 4, 5]
list2.append('Python')
list2.append(True)
print(list2)
==> [1, 2, 3, 4, 5, 'Python', True]
# appendの引数にlistを指定するとlist自体がlistの要素になる
list3 = [True, False]
list4 = ['list', 'tuple', 'dict']
list3.append(list4)
print(list3)
==> [True, False, ['list', 'tuple', 'dict']]
# 空のlistにdict型の要素を追加する
list5 = []
dict1 = {'p': 'Programming'}
list5.append(dict1)
print(list5)
==> [{'p': 'Programming'}]
class Person:
def __init__(self, identifier, name):
self.identifier = identifier
self.name = name
# Person型の要素をforを使用して追加する
list6 = []
for i in range(3):
person = Person(i, 'person' + str(i))
list6.append(person)
for person in list6:
print(vars(person))
==> {'identifier': 0, 'name': 'person0'}
==> {'identifier': 1, 'name': 'person1'}
==> {'identifier': 2, 'name': 'person2'}
# スライス操作(slicing operations)での追加も可能
list7 = [1, 2, 3, 4, 5]
list7[len(list7):] = ['new string']
print(list7)
==> [1, 2, 3, 4, 5, 'new string']
# forを使用してlistの中のlistに値を追加する
list8 = [[], [], []]
for i in range(3):
list8[i].append(i)
print(list8)
==> [[0], [1], [2]]
関連情報:forの使用方法
関連情報:class(クラス定義)の使用方法
関連情報:rangeの使用方法
任意の位置に要素を追加したい場合(insert)
# インデックスが0の位置に要素を追加する
list1 = [0, 1, 2]
list1.insert(0, 999)
print(list1)
==> [999, 0, 1, 2]
# インデックスが2の位置に要素を追加する
list2 = ['programming', 'coding', 'hacking']
list2.insert(2, 'HACKER')
print(list2)
==> ['programming', 'coding', 'HACKER', 'hacking']
listを拡張したい場合(extend, +)
# appendではlistが展開されずに要素に追加される
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8]
list1.append(list2)
print(list2)
==> [1, 2, 3, 4, 5, [6, 7, 8]]
# extendを使用して2つのlistを結合する
list3 = [1, 2, 3, 4, 5]
list4 = [6, 7, 8]
list3.extend(list4)
print(list3)
==> [1, 2, 3, 4, 5, 6, 7, 8]
# +を用いても同様の結果を得ることができる
list5 = ['Python', 'Kotlin']
list6 = [False, 555]
# list5 = list5 + list6と同義
list5 += list6
print(list5)
==> ['Python', 'Kotlin', False, 555]
# スライス操作(slicing operations)での追加も可能
list7 = [1, 2, 3, 4, 5]
list7[len(list7):] = [6, 7, 8, 9, 10]
print(list7)
==> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
解説
基本
listクラスのメソッドであるappendを使用すると、使用したlist型のオブジェクトの末尾に引数で与えた値を追加することができます。
listには型の制限はないので、どんな型のオブジェクトでもappendの引数として指定することが可能です。
また、appendの引数に別のlist型オブジェクトを指定すると、最後尾に引数で指定した値がそのまま挿入されます。
list同士を結合させたい場合には後述するextend
や+
を使用する必要があるので注意してください。
list1 = ['Programming', 'Coding']
list1.append('Hacking')
print(list1)
==> ['Programming', 'Coding', 'Hacking']
list2 = [True, True]
list2.append(100)
print(list2)
==> [True, True, 100]
list3 = ['January', 'February']
list4 = ['March', 'April', 'May']
list3.append(list4)
print(list3)
==> ['January', 'February', ['March', 'April', 'May']]
任意の位置に要素を追加したい場合(insert)
appendを使用したlistへの要素の追加は、常に最後尾へと追加されます。
任意のインデックスの位置に要素を追加したい場合の方法の1つとして、listクラスのメソッドであるinsert
が挙げられます。
insert
の第1引数に挿入したいインデックス、第2引数に挿入したい要素を指定します。
list1 = ['str', 'int', 'dict', 'tuple']
list1.insert(2, 'list')
print(list1)
==> ['str', 'int', 'list', 'dict', 'tuple']
listを拡張したい場合(extend, +)
異なるlistの要素を展開して追加したい場合があります。
このページでは、listクラスのメソッドであるextend
と+
を例として挙げます。
extend
を用いる場合には、引数に展開して追加したいlistを指定してください。
より正確には、extend
は引数に反復可能(iterable)なオブジェクトを取ることができるので、
tuple型やdict型などのオブジェクトを指定することも可能です。
詳しい挙動や例は以下のリンクを参考にしてください。
また、同様の結果を得るために+
も使用することができます。以下に挙げる例で挙動を確認してください。
list0 = [1, 2]
list0.append(['1', '2'])
print(list0)
==> [1, 2, ['1', '2']]
list1 = [0, 0, 0]
list2 = [100, 200, 300]
list1.extend(list2)
print(list1)
==> [0, 0, 0, 100, 200, 300]
list3 = ['apple', 'banana', 'kiwi']
list4 = [{'key': 'value'}]
list3 += list4
print(list3)
==> ['apple', 'banana', 'kiwi', 'APPLE', 'BANANA', 'KIWI']