Pythonのリストに要素を追加,結合/連結する方法まとめ

ここでは、Pythonのリストに新しい要素を追加したり、別のリストを結合したりする方法を全てまとめています。一見、同じに見えるものもありますが、実は、細かい特徴の違いがあります。

そうした特徴の違いも踏まえて、使いこなせるようになると、大変便利になっていきますので、ぜひ、抑えておいて頂ければと思います。

それでは、早速見ていきましょう。

目次

1.「+」演算子で結合/連結する

リストの結合は、文字列の連結と同じように、「+」演算子を使います(演算子については「Pythonの演算子」をご確認ください)。

実際に見てみましょう。

In [1]:
'''リストを作ります。'''
list_a = ["apple", "berry", "cherry"]
list_b = ["red", "yello", "green"]
list_c = [1, 2, 3]
 
'''「+」演算子でリストを結合します。'''
ab = list_a + list_b  # "list_a" と "list_b" を連結します。
abc = list_a + list_b + list_c  #2つ以上でも連結できます。
 
'''printして確認します。'''
print(ab)  #"list_a + list_b"をプリントして出力します。
print(abc) # "list_a + list_b + list_c"をプリントして出力します。
['apple', 'berry', 'cherry', 'red', 'yello', 'green']
['apple', 'berry', 'cherry', 'red', 'yello', 'green', 1, 2, 3]

異なる複数のリストが、1つのリストに連結されていますね。特に難しいことはないかと思います。

2.  「+=」演算子で要素を追加する

「+=」演算子を使うと、リストに、要素を追加していくことができます。

以下の例では、空のリストに自由に要素を追加しています(空のリストについては「初心者のためのPythonのリスト作成方法」で解説しています)。

In [1]:
'''空のリストを作ります。'''
list = [] 
 
'''「+=」演算子で要素を追加します。'''
list += ["apple"]  #この時点で"list"の要素は['apple']です。
 
'''続けて新しい要素を追加することができます。'''
list += ["red", "yellow"]  #この時点で['apple', 'red', 'yellow']です。
 
'''何度でも追加できます。'''
list += [1, 2, 3] #この時点で['apple', 'red', 'yellow', 1, 2, 3]です。
 
'''printして確認しましょう。'''
print(list)
['apple', 'red', 'yellow', 1, 2, 3]

混乱する方もいるかもしれないので、補足として、「+」演算子と「+=」演算子の違いについて触れておきましょう。 

「+」演算子と「+=」演算子の違い

「+」演算子と、「+=」演算子の違いは、簡潔に言うと、前者は「リストの結合」であり、後者は「要素の追加」だというところにあります。

以下で見比べてみましょう。まずは「+」演算子です。

In [1]:
'''「+」演算子で結合しても元のリストに変化はありません。'''
list_a = ["apple"]
list_b = ["red", "yellow"]
list_c = list_a + list_b
 
'''printして確認しましょう。'''
print(list_a) #「list_a」に変化はありません。
print(list_b) #「list_b」に変化はありません。
print(list_c) #「list_a」と「list_b」が結合した新たなリストができます。
['apple']
['red', 'yellow']
['apple', 'red', 'yellow']

このように「+」演算子は、複数のリスト(「list_a」と「list_b」)を結合して、新たなリスト(「list_c」)を作ります。もともとのリストは変化しません。あくまでも、複数のリストを結合するだけです。

一方で、「+=」演算子は、もともとのリストに新しい要素を追加します。

以下で確認しましょう。

In [2]:
'''「+=」演算子は元のリスト自体に要素を追加していきます。'''
list_d = ["apple"]   #この時点で"list_d"は['apple']です。
list_d += ["red", "yellow"]  #これで"list_d"は['apple', 'red', 'yellow']に変化しました。
 
'''printして確認しましょう。'''
print(list_d)  
['apple', 'red', 'yellow']

このように、「+」演算子は、複数のリストを結合して新たなリストを作ります。一方で「+=」演算子は、元のリストに要素を追加していきます。

3. 末尾に要素を追加する | append()

Pythonのリストの末尾に要素を追加するには、append()メソッドを使います。以下のように書きます。

In [0]:
リスト.append(追加したい要素)

早速見ていきましょう。リストの末尾に要素を追加していきます。

In [1]:
list = ["apple"]
list.append("berry")   #リストに"berry"を追加
list.append("cherry") #リストに"cherry"を追加
print(list)
['apple', 'berry', 'cherry']

機能としては「+=」演算子と同じですね。

appendメソッドは 1 つずつしか要素を追加できない

しかし、append()メソッドでは、「+=」演算子のように、複数の要素を同時に追加することはできません。以下のようにエラーになります。

In [2]:
#2つ以上の要素を同時に追加することはできません。
list = ["apple"]
list.append("berry", "berry")  
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-0a82ac085083> in <module>()
      1 #2つ以上の要素を同時に追加することはできません。
      2 list = ["apple"]
----> 3 list.append("berry", "berry")
TypeError: append() takes exactly one argument (2 given)

そのため、複数の要素を同時に追加したい場合は、「+=」演算子の方が楽です。

なお「Pythonのappendでリストに要素を追加する」では、appendメソッドについてさらに詳しく解説しているので、ぜひあわせてご確認ください。

4. リストの指定の位置に要素を追加する | insert()

リスト内の指定の位置に要素を追加したい場合は、insert()メソッドを使います。次のように書きます。

In [0]:
リスト.insert(挿入位置, 追加したい要素)

「挿入する位置」は、インデックス番号で指定します。これについて先に解説したいと思います。

以下のリストを作ったとします。

In [1]:
#リストを作ります。
colors = ["red", "orange", "blue", "green", "yellow"]

この時、リスト内の要素の一つ一つに、インデックス番号が次のように割り振られています。なおインデクシングについては「文字列を抽出する方法まとめ」でも触れています。

insert()メソッドでは、このインデックス番号を使って、挿入位置を指定します。例として、インデックス番号 3 の “green” の箇所に、新たに “purpule” という要素を追加してみましょう。

In [2]:
#インデックス 3 に新しい要素を追加します。
colors.insert(3, "purple")
print(colors)
['red', 'orange', 'blue', 'purple', 'green', 'yellow']

リスト”colors”の中の任意の場所に、新しい要素”purple”が追加されました。インデックス番号は、スライドして以下のようになります。

5. 2つのリストを結合する | extend()

リストを結合する方法は「+」演算子以外にも、extend()メソッドを使う方法もあります。

次のように書きます。

In [0]:
リスト.extend(追加したいリスト)

「+」演算子を使う方法は、連結されるリスト自体には変化はありませんでした。

しかし、extend()メソッドでは、新しい要素を追加された側のリストは変化します。追加したリストの方は変化しません。

次の例をご覧ください。

In [1]:
list_a = ["apple", "berry", "cherry"]
list_b = [1, 2, 3]
list_a.extend(list_b)  #"list_a"に"list_b"を結合/連結します。
print(list_a)  #"list_a"は変化します。 
print(list_b)  #"list_b"は変化しません。 
['apple', 'berry', 'cherry', 1, 2, 3]
[1, 2, 3]

新しい要素を追加された側のリスト(list_a)が変化して、追加したリスト(list_b)には変化はありませんね。「+」演算子による結合と使い分けられるようになっていたら、中上級者と言えるでしょう。

extend()メソッドとappend()メソッドの違い

extend()メソッドと append()メソッドは混同される場合があります。この2つのメソッドには明確な違いがあるので解説しておきます。

append()メソッドは、引数に入力したものを、リストではなく、要素として追加していきます。そのためappend()でリストを追加すると次のようになります。

In [1]:
data = [1, 3, 5]
new_data = [2, 4, 6]
data.append(new_data)
print(data)
[1, 3, 5, [2, 4, 6]]

違いはお分かりでしょうか?

出力結果を見てみると、[1, 3, 5, [2, 4, 6]]となっています。これは、リスト「data」の中に、別のリスト「new_data」が追加されているということです。

[1, 3, 5, 2, 4, 6]のように、2つのリスト内の要素が連結されているのではありませんね。

なお、「Pythonのextendメソッドの使い方」では、さらに多くのコード例を使って、より詳しく解説しています。

6. まとめ

いかがだったでしょうか。

最初は、違いが分からないものもあるかもしれません。実際に、自分でコードを書いて、どのように処理すれば良いのかを迷ったところで、こうした細かい違いに焦点を当てて、適切な方法を見つけられるようになると、書けるコードの質が、一気に高まります。

ぜひ、そうしたことも踏まえて覚えておいて下さいね!



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる