ここでは、Pythonのリストに新しい要素を追加したり、別のリストを結合したりする方法を全てまとめています。一見、同じに見えるものもありますが、実は、細かい特徴の違いがあります。
そうした特徴の違いも踏まえて、使いこなせるようになると、大変便利になっていきますので、ぜひ、抑えておいて頂ければと思います。
それでは、早速見ていきましょう。
1.「+」演算子で結合/連結する
リストの結合は、文字列の連結と同じように、「+」演算子を使います(演算子については「Pythonの演算子」をご確認ください)。
実際に見てみましょう。
'''リストを作ります。'''
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"をプリントして出力します。
異なる複数のリストが、1つのリストに連結されていますね。特に難しいことはないかと思います。
2. 「+=」演算子で要素を追加する
「+=」演算子を使うと、リストに、要素を追加していくことができます。
以下の例では、空のリストに自由に要素を追加しています(空のリストについては「初心者のためのPythonのリスト作成方法」で解説しています)。
'''空のリストを作ります。'''
list = []
'''「+=」演算子で要素を追加します。'''
list += ["apple"] #この時点で"list"の要素は['apple']です。
'''続けて新しい要素を追加することができます。'''
list += ["red", "yellow"] #この時点で['apple', 'red', 'yellow']です。
'''何度でも追加できます。'''
list += [1, 2, 3] #この時点で['apple', 'red', 'yellow', 1, 2, 3]です。
'''printして確認しましょう。'''
print(list)
混乱する方もいるかもしれないので、補足として、「+」演算子と「+=」演算子の違いについて触れておきましょう。
「+」演算子と「+=」演算子の違い
「+」演算子と、「+=」演算子の違いは、簡潔に言うと、前者は「リストの結合」であり、後者は「要素の追加」だというところにあります。
以下で見比べてみましょう。まずは「+」演算子です。
'''「+」演算子で結合しても元のリストに変化はありません。'''
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」が結合した新たなリストができます。
このように「+」演算子は、複数のリスト(「list_a」と「list_b」)を結合して、新たなリスト(「list_c」)を作ります。もともとのリストは変化しません。あくまでも、複数のリストを結合するだけです。
一方で、「+=」演算子は、もともとのリストに新しい要素を追加します。
以下で確認しましょう。
'''「+=」演算子は元のリスト自体に要素を追加していきます。'''
list_d = ["apple"] #この時点で"list_d"は['apple']です。
list_d += ["red", "yellow"] #これで"list_d"は['apple', 'red', 'yellow']に変化しました。
'''printして確認しましょう。'''
print(list_d)
このように、「+」演算子は、複数のリストを結合して新たなリストを作ります。一方で「+=」演算子は、元のリストに要素を追加していきます。
3. 末尾に要素を追加する | append()
Pythonのリストの末尾に要素を追加するには、append()メソッドを使います。以下のように書きます。
リスト.append(追加したい要素)
早速見ていきましょう。リストの末尾に要素を追加していきます。
list = ["apple"]
list.append("berry") #リストに"berry"を追加
list.append("cherry") #リストに"cherry"を追加
print(list)
機能としては「+=」演算子と同じですね。
appendメソッドは 1 つずつしか要素を追加できない
しかし、append()メソッドでは、「+=」演算子のように、複数の要素を同時に追加することはできません。以下のようにエラーになります。
#2つ以上の要素を同時に追加することはできません。
list = ["apple"]
list.append("berry", "berry")
そのため、複数の要素を同時に追加したい場合は、「+=」演算子の方が楽です。
なお「Pythonのappendでリストに要素を追加する」では、appendメソッドについてさらに詳しく解説しているので、ぜひあわせてご確認ください。
4. リストの指定の位置に要素を追加する | insert()
リスト内の指定の位置に要素を追加したい場合は、insert()メソッドを使います。次のように書きます。
リスト.insert(挿入位置, 追加したい要素)
「挿入する位置」は、インデックス番号で指定します。これについて先に解説したいと思います。
以下のリストを作ったとします。
#リストを作ります。
colors = ["red", "orange", "blue", "green", "yellow"]
この時、リスト内の要素の一つ一つに、インデックス番号が次のように割り振られています。なおインデクシングについては「文字列を抽出する方法まとめ」でも触れています。
insert()メソッドでは、このインデックス番号を使って、挿入位置を指定します。例として、インデックス番号 3 の “green” の箇所に、新たに “purpule” という要素を追加してみましょう。
#インデックス 3 に新しい要素を追加します。
colors.insert(3, "purple")
print(colors)
リスト”colors”の中の任意の場所に、新しい要素”purple”が追加されました。インデックス番号は、スライドして以下のようになります。
5. 2つのリストを結合する | extend()
リストを結合する方法は「+」演算子以外にも、extend()メソッドを使う方法もあります。
次のように書きます。
リスト.extend(追加したいリスト)
「+」演算子を使う方法は、連結されるリスト自体には変化はありませんでした。
しかし、extend()メソッドでは、新しい要素を追加された側のリストは変化します。追加したリストの方は変化しません。
次の例をご覧ください。
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"は変化しません。
新しい要素を追加された側のリスト(list_a)が変化して、追加したリスト(list_b)には変化はありませんね。「+」演算子による結合と使い分けられるようになっていたら、中上級者と言えるでしょう。
extend()メソッドとappend()メソッドの違い
extend()メソッドと append()メソッドは混同される場合があります。この2つのメソッドには明確な違いがあるので解説しておきます。
append()メソッドは、引数に入力したものを、リストではなく、要素として追加していきます。そのためappend()でリストを追加すると次のようになります。
data = [1, 3, 5]
new_data = [2, 4, 6]
data.append(new_data)
print(data)
違いはお分かりでしょうか?
出力結果を見てみると、[1, 3, 5, [2, 4, 6]]となっています。これは、リスト「data」の中に、別のリスト「new_data」が追加されているということです。
[1, 3, 5, 2, 4, 6]のように、2つのリスト内の要素が連結されているのではありませんね。なお、「Pythonのextendメソッドの使い方」では、さらに多くのコード例を使って、より詳しく解説しています。
6. まとめ
いかがだったでしょうか。
最初は、違いが分からないものもあるかもしれません。実際に、自分でコードを書いて、どのように処理すれば良いのかを迷ったところで、こうした細かい違いに焦点を当てて、適切な方法を見つけられるようになると、書けるコードの質が、一気に高まります。
ぜひ、そうしたことも踏まえて覚えておいて下さいね!
コメント