Pythonのextendメソッドの使い方と解説

Pythonのextendメソッドはリストに要素を追加する時に使うメソッドです。ここで一通り解説します。

目次

1. Pythonのextendメソッド

extendメソッドは次のように書きます。任意のリストに指定の要素を追加するメソッドです。

In [ ]:
''' extendメソッドの書き方 '''
リスト.extend(追加したいリスト or タプル or 集合)
  • 引数のパラメータ:extend()の引数にはイテラブル(リストやタプル、集合)を渡します。
  • 返り値:このメソッドには返り値はありません。単純にリストに要素を追加するだけです。

extendメソッドはリストメソッドなのでリスト以外のオブジェクトに使うことはできません。

2. Pythonのextendメソッドの使い方

早速、次のコードをご覧ください。

In [1]:
''' extendメソッドの使い方 '''
list_a = [123, 'abc', 456, 'def', 789]
list_b = [2019, 'heisei']

print('元のリスト:', list_a)
list_a.extend(list_b)  #  返り値はありません。
print('実行後のリスト:', list_a)  #  元のリストが変化します。
print('追加したリスト:', list_b)  #  extendメソッドの引数に入れたリストは変化しません。
元のリスト: [123, 'abc', 456, 'def', 789]
実行後のリスト: [123, 'abc', 456, 'def', 789, 2019, 'heisei']
追加したリスト: [2019, 'heisei']

list_aにextendメソッドを使ってlist_bの要素を追加しています。メソッド実行後はlist_aに要素が追加されており、かつlist_bには変化がないことをご確認ください。なお、以下のコードのようにextendメソッドの引数に渡すのはタプルや集合でも構いません。

In [1]:
''' extendメソッドの引数に渡すのは、tupleやsetでも構いません。 '''
#  言語のリスト
language = ['English', 'French', 'Japanese']
#  言語のタプル
lang_tuple = ['Chinese', 'Portuguese']
#  言語のセット
lang_set = {'Spanish', 'German'}


#  メソッド実行前のリスト
print(language)
#  タプルの要素を追加します。
language.extend(lang_tuple)
print('タプルを追加した後のリスト:', language)
#  続いてセットの要素を追加します。
language.extend(lang_set)
print('セットを追加した後のリスト:', language)
['English', 'French', 'Japanese']
タプルを追加した後のリスト: ['English', 'French', 'Japanese', 'Chinese', 'Portuguese']
セットを追加した後のリスト: ['English', 'French', 'Japanese', 'Chinese', 'Portuguese', 'Spanish', 'German']

実はextendメソッドではなくても+=演算子で同様のことができます。

In [1]:
''' 実はextendメソッドでなくても+=で連結することもできます。 '''
''' Python 3.7.2 '''

list1 = [1, 2, 3]
list2 = [4, 5, 6]
tuple1 = (7, 8, 9)
set1 = {10, 11, 12}

print('最初のlist1;', list1)  

#  ①list+=list
list1 += list2
print('①の演算後のlist1:', list1)
#  ②list+=tuple
list1+=tuple1
print('②の演算後のlist1:', list1)
#  ③list+=set
list1 += set1
print('③の演算後のlist1:', list1)
最初のlist1; [1, 2, 3]
①の演算後のlist1: [1, 2, 3, 4, 5, 6]
②の演算後のlist1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
③の演算後のlist1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

実はPythonでは、extendメソッドと+=演算子は同じような動作になっているようです。そのため、どちらを使っても構いません。

ただしリストとリスト以外のオブジェクトを+演算子で連結しようとした場合はエラーになります。

In [1]:
''' ただし+演算子ではエラーになります。'''
''' Python 3.7.2 '''
list1 + tuple1
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-18c663f6fca3> in <module>
      1 ''' ただし+演算子ではエラーになります。'''
----> 2 list1 + tuple1

TypeError: can only concatenate list (not "tuple") to list

3. Pythonのextendとappend

Pythonでオブジェクトに要素を追加するメソッドにはextend()以外にappend()もあります。

extend()では、引数に渡したリストの要素を任意の要素に追加することができます。append()メソッドでは、引数に渡したリストの要素は追加先のリストにネスティングされた上で追加されます。

次のコードをご覧ください。

In [1]:
''' appendメソッドでは別のリストを追加することもできます。 '''
list1.append(list2)
print(list1)

''' もし要素のみを追加したい場合はextendメソッドを使います。 '''
list_a = [1, 2, 3, 4, 5]
list_b = ['a', 'b', 'c', 'd', 'e']
list_a.extend(list_b)
print(list_a)
[2, 3, 4, 5, 6, 7, 1, ['あ', 'い', 'う', 'え', 'お', 'か', 'き', 'く']]
[1, 2, 3, 4, 5, 'a', 'b', 'c', 'd', 'e']

Pythonのappendの使い方とよく聞かれることまとめ』でも解説しているの併せて確認しておきましょう。

4. まとめ

Pythonのextendメソッドはリスト専用のメソッドで、新たな要素を追加する時に使います。重要な点として、このメソッドはリストに要素を追加するのであって返り値はないということを覚えておきましょう。

メソッドの引数には、リストだけでなくタプルや集合でも可能です。また、細かいですがextendメソッドと+=は同じ動きをするので、実はどちらを使っても構いません。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる