Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのリストメソッド完全ガイド:要素の追加・削除・並べ替えを実例で解説

リストは、Python 3に標準で組み込まれているデータ構造の一つです。リストを使えば、製造業の仕入れ先一覧、社員の給与情報、学生の成績リストなど、あらゆるデータを順序立てて整理・保存できます。


Pythonには、リストに格納されたデータを変更・操作するための組み込みメソッドが数多く用意されています。

このガイドでは、リスト操作に役立つ主要な組み込みメソッドを詳しく解説します。リストへの要素の追加・削除、要素数の取得、リストの反転など、実用的なテクニックをひとつずつ見ていきましょう。

リストの基本をおさらい

リストとは、Pythonにおける「ミュータブル(変更可能)」で「順序を持つ」データ型です。つまり、リストは後から内容を変更でき、データを特定の順序で保持します。

リスト内の各要素はitem(アイテム)と呼ばれ、リストは角括弧[]の中にカンマ区切りの値を並べて定義します。

Pythonでリストを作成する方法は次のとおりです。

news_sites = ["New York Times", "Washington Post", "CNN", "BuzzFeed"]

リストの内容を出力するには、print()関数を使用します。

print(news_sites)

プログラムを実行すると、定義した通りのリストが返されます。

['New York Times', 'Washington Post', 'CNN', 'BuzzFeed']

リストから特定の要素を取得するには、その要素のインデックス(添字)を参照します。リストの各項目には0から始まるインデックス番号が割り当てられており、これによって個々の要素にアクセスできます。上記のリストのインデックスは以下のようになっています。

New York TimesWashington PostCNNBuzzFeed
0123

インデックス番号がわかれば、リストから任意の値を取り出せます。例えば次のコードを見てみましょう。

print(news_sites[0])

このコードはNew York Timesを返します。同様に、インデックス2の要素を参照すれば、CNNが返されます。

さらに、リストの各項目には負のインデックス番号も割り当てられています。負のインデックスを使うとリストを後ろから数えられるため、要素数が多いリストの末尾近くにある値を取得したい場合に便利です。

上記のリストの負のインデックスは次のとおりです。

New York TimesWashington PostCNNBuzzFeed
-4-3-2-1

インデックス-1の位置にある要素を取得するには、次のコードを使います。

print(news_sites[-1])

このコードはBuzzFeedを返します。

リストの基本がわかったところで、次はPythonのリストメソッドを詳しく見ていきましょう。

list.append()で要素を末尾に追加する

list.append()メソッドを使うと、リストの末尾に新しい項目を追加できます。ピザのフレーバーを管理するリストの例を見てみましょう。

flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni"]

このリストは5つの値で構成され、インデックスは0から4まで振られています。ここで、「ミートラバーズ」という新しいピザをメニューに加えたくなったらどうすればよいでしょうか。そんなときはappend()メソッドが活躍します。

append()を使ってMeat-Loversをリストに追加する例は次のとおりです。

flavors.append("Meat-Lovers")
print(flavors)

実行すると、末尾にMeat-Loversが追加されたリストが返されます。

['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']

list.insert()で指定位置に挿入する

append()はリストの末尾にしか追加できませんが、特定の位置に要素を挿入したい場合はinsert()メソッドを使います。insert()なら、リスト内の任意の場所に項目を追加できます。

例えば、ピザ職人がハラペーニョを使った自家製スペシャルピザを考案し、新規顧客にアピールするためにメニューの一番上に載せたいとしましょう。

この目的を達成するにはinsert()メソッドを使います。insert()は2つの引数を受け取ります。1つ目は挿入位置のインデックス、2つ目は追加したい項目です。次の例では、Jalapeno Specialをフレーバーリストの先頭に追加しています。

flavors.insert(0, "Jalapeno Special")
print(flavors)

実行結果は次のとおりです。

['Jalapeno Special', 'Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']

ご覧のとおり、Jalapeno Specialがリストの先頭に追加され、インデックス0が割り当てられました。それに伴い、他のすべての要素も後ろにずれて、新しい位置に対応したインデックス番号が振り直されています。例えばHam and Pineappleはインデックス1になりました。

list.remove()で要素を削除する

Pythonのリストから項目を削除するには、list.remove()メソッドを使います。このメソッドは、指定した値と一致する最初の項目をリストから削除します。

話を戻しましょう。Jalapeno Specialを1週間試験販売したところ、顧客からの評判が今ひとつだったため、レシピを改良するまでメニューから外すことにしました。Jalapeno Specialをリストから削除するコードは次のとおりです。

flavors.remove("Jalapeno Special")
print(flavors)

実行すると、Jalapeno Specialが取り除かれたリストが返されます。

['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers']

remove()メソッドを使う際には、いくつか注意点があります。第一に、リストに存在しない項目を削除しようとすると、not in list.というエラーが発生します。第二に、remove()は一致した最初の項目しか削除しません。もしリストにJalapeno Specialが2つあった場合は、両方とも削除するためにremove()を2回実行する必要があります。

list.pop()で要素を取り出して削除する

list.pop()メソッドを使うと、リストから項目を削除しつつ、その値を取得(返却)できます。

pop()メソッドは省略可能な引数を1つ受け取ります。それは、削除したい要素のインデックス番号です。インデックスを指定しない場合、pop()はリストの最後の項目を返して削除します。

ピザ店では、Meat-Loversを試験メニュー(シェフの新作実験ピザのラインナップ)に移動することにしました。そこで、フレーバーリストからMeat-Lovers(インデックス5)を削除します。

flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni", "Meat-Lovers"]
print(flavors.pop(5))
print(flavors)

実行結果は次のとおりです。

Meat-Lovers
['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni']

ご覧のとおり、pop()は指定した値を削除し、削除された項目の値(この場合はMeat-Lovers)を返しています。その後、新しいリストを出力すると、Meat-Loversが含まれていないことが確認できます。

list.extend()で複数のリストを結合する

list.extend()メソッドを使うと、複数のリストを結合できます。extend()メソッドは引数を1つだけ受け取ります。それは、既存のリストに追加したいリストオブジェクトです。

ピザ店では、2つのメニューがあると顧客が混乱するという声が寄せられたため、通常メニューと特別メニューを統合することにしました。両方のメニューを結合するコードは次のとおりです。

flavors = ["Ham and Pineapple", "Cheese", "Mexican", "Chicken", "Pepperoni"]
special_menu = ["Meat-Lovers", "BBQ Chicken", "Sausage and Pepperoni", "Vegetarian Special", "Greek"]

flavors.extend(special_menu)
print(flavors)

実行結果は次のとおりです。

['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers', 'BBQ Chicken', 'Sausage and Pepperoni', 'Vegetarian Special', 'Greek']

ご覧のとおり、flavorsリストには、元のフレーバーリストとspecial_menuリストの両方の項目が含まれています。

list.copy()でリストをコピーする

list.copy()メソッドを使うと、リストのコピーを作成できます。元のリストを保持したまま別のリストを操作したい場合などに便利です。

ピザ職人はさらにメニューの実験を続け、新しいピザを2種類追加することにしました。ただし、元のメニューのリストも参考用に残しておきたいと考えています。

そこで、元のリストを保存したまま新しいピザを追加できるよう、メニューのコピーを作成します。

new_menu = menu.copy()
print(menu)

実行結果は次のとおりです。

['Ham and Pineapple', 'Cheese', 'Mexican', 'Chicken', 'Pepperoni', 'Meat-Lovers', 'BBQ Chicken', 'Sausage and Pepperoni', 'Vegetarian Special', 'Greek']

これで、同じ値を持つ2つのリスト(flavorsnew_menu)ができました。シェフはflavorsリストを残したまま、new_menuを自由に編集できます。

list.sort()でリストを並べ替える

list.sort()メソッドを使うと、リスト内の項目を並べ替えられます。

シェフは、お客様が目的のピザを見つけやすいように、リストをアルファベット順に並べ替えることにしました。次のコードは、sort()を使ってリストをアルファベット順に並べ替える例です。

flavors.sort()
print(flavors)

実行結果は次のとおりです。

['BBQ Chicken', 'Cheese', 'Chicken', 'Greek', 'Ham and Pineapple', 'Meat-Lovers', 'Mexican', 'Pepperoni', 'Sausage and Pepperoni', 'Vegetarian Special']

なお、sort()は数値のリストにも使えます。その場合は昇順に並べ替えられます。

list.reverse()でリストを逆順にする

list.reverse()メソッドを使うと、リスト内の項目の順序を反転できます。

このメソッドは降順にソートするのではなく、単純にリスト内の全項目の順序をひっくり返すものです。つまり、元のリストの最後の項目が新しいリストの最初の項目になり、後ろから2番目の項目が2番目になる、といった具合です。

ピザ職人は、メニュー下部の商品の売上が伸びていることに気づいたため、ピザのリストを逆順に並べ替えることにしました。リストを反転させるコードは次のとおりです。

flavors = ['BBQ Chicken', 'Cheese', 'Chicken', 'Greek', 'Ham and Pineapple', 'Meat-Lovers', 'Mexican', 'Pepperoni', 'Sausage and Pepperoni', 'Vegetarian Special']
flavors.reverse()
print(flavors)

実行結果は次のとおりです。

['Vegetarian Special', 'Sausage and Pepperoni', 'Pepperoni', 'Mexican', 'Meat-Lovers', 'Ham and Pineapple', 'Greek', 'Chicken', 'Cheese', 'BBQ Chicken']

ご覧のとおり、元のリストで最後だったVegetarian Specialが最初の項目になりました。リストが完全に反転しています。

list.clear()でリストを空にする

list.clear()メソッドを使うと、リスト内のすべての値を削除できます。

月が変わり、ピザ店のシェフは1月の売上リストをクリアして、2月用の新しいリストを作りたいと考えています。salesリストをクリアして2月のデータを記録できるようにするコードは次のとおりです。

sales.clear()
print(sales)

実行すると、値が何もない空のリスト[]が返されます。

まとめ

リストは、変更可能で順序を持つ項目の集まりであり、同種のデータを格納するのに適しています。このチュートリアルでは、リストを操作したり、リスト内のデータに関する情報を得たりするために使える、よく使用されるPythonのリストメソッドを解説しました。

具体的には、append()insert()remove()pop()extend()copy()sort()reverse()clear()の各メソッドの使い方を、それぞれ実際の動作例とともに見てきました。

これであなたも、プロのようにPythonのリストメソッドを使いこなせるはずです!

  1. Pythonでリストを逆順にする方法:reverse()・reversed()・スライスを徹底解説

    Pythonでは、組み込みメソッドのreverse()やreversed()を使って、リストを簡単に逆順にできます。これらのメソッドは、元のリストオブジェクトの要素を反転させるための標準的な手段です。 はじめに リストの反転(リバース)は、あらゆるプログラミング言語で頻繁に使われる基本的な操作の一つです。このチュートリアルでは、Pythonでリストを逆順にする最も効果的な方法を、サンプルコードとともに詳しく解説します。 例えば、顧客名のリストが五十音の逆順になっていて、正しい順序で表示したいとしましょう。その場合はリストを反転する必要があります。また、長いリストの末尾にあるデータを素

  2. Pythonインタープリターとは?仕組みと初心者向けオンライン環境を徹底解説

    Pythonは学びやすいプログラミング言語として知られています。その理由のひとつが、自分のマシンに正しいバージョンのPythonをインストールしなくても、オンラインで利用できるPythonインタープリターが数多く存在する点です。本記事では、Pythonインタープリターの仕組みについて解説し、初心者にも使いやすい人気のオンラインインタープリターをご紹介します。 Pythonプログラムはどのように実行されるのか? PythonはJavaと同様に、純粋なインタプリタ言語ともコンパイラ言語とも分類できず、両方の性質を併せ持っています。 ここでいう「コンパイル」とは、特定のプラットフォームに依存し