リストは角括弧[]で要素を囲んで作成することができました。
インデックスを使って取り出したり、スライスしたりすることもできました。
当然、それ以外にもいろんな処理を行いたいわけですが、リストにも様々なメソッドが用意されています。
ここではリストのメソッドについて扱っていきましょう。
Pythonでのリストのメソッドいろいろ
Pythonでのリストのメソッドを全部触れるのはもちろん無理ですが、よく利用されるメソッドをいくつか見ていきたいと思います。
append()で末尾に要素を追加する
リストに要素を加える方法として、append()があります。これを利用することで、リストの末尾に要素をひとつずつ加えていくことができます。
リスト.append(追加したい要素)という形で利用します。
次のコードを例に見ていきましょう。
lang = ["C", "C++", "Java", "PHP", "Ruby"]
lang.append("python")
langという変数のリストに、「Python」という文字列を末尾に追加するコードです。
対話型シェルで実行するとこうなります。
リストの最後に「Python」が追加されて出力されているのがわかります。
extend()でリストを結合する
ふたつのリストを結合したい場合は、extend()を使います。
リスト.extend(加えたりリスト)という形で利用します。
ふたつのリストを用意して、extend()で結合するコードを書いてみるとこうなります。
l = [1, 2, 3]
m = [10, 20, 30]
l.extend(m)
これは、リスト「l」にリスト「m」を結合するコードです。
対話型シェルで実行してみましょう。
リストに要素がまとめて加えられているのがわかりますね。
「+=」を使う
このコードは以下のように「+=」を使って書き換えることもできます。
l = [1, 2, 3]
m = [10, 20, 30]
l += m
実行結果も同じになるはずです。
append()との違い
この結合を次のコードのようにappend()を使って実行してみると、どうなるでしょうか。
l = [1, 2, 3]
m = [10, 20, 30]
l.append(m)
実行するとこうなります。
extend()との違いがわかるでしょうか? こちらは要素がそれぞれ追加されるのではなく、リストそのものが要素として末尾に加えられています。
この2つの動作の違いも理解しておきましょう。
insert()で要素を追加する
insert()を利用すれば、オフセットを使ってリスト中の指定の位置に要素を追加することができます。
リスト.insert(オフセットの位置, 追加する要素)という形で利用します。
lang = ["C", "C++", "Java", "PHP", "Ruby"]
lang.insert(2, "Python")
langというリストの中の、インデックスで「2」の位置に「Python」という文字列を追加するコードです。
実行すると、このようになります。
リストの3番目(インデックスの2番目)に「Python」が追加されているのがわかります。
remove()で要素を削除する
削除したい要素のインデックスがわからなくても、要素そのものを指定してリストから削除することもできます。それにはremove()を利用すれば可能です。
リスト.remove(削除したい要素)という形で利用します。
insert()で実行した結果を使ってみましょう。追加した「Python」の文字列を指定して削除してみます。
lang.remove("Python")
先ほどの結果に続けて実行してみると、こうなります。
insert()で追加した「Python」が、リストから削除されているのがわかりますね。
pop()で要素を取り出し削除する
remove()は要素を指定しての削除でしたが、pop()を使えばインデックスを指定して要素を取り出し削除することができます。
リスト.pop(削除したい要素のインデックス)の形で利用します。インデックスを指定しない場合は、リストの末尾の要素が削除されます。
コードでためしてみましょう。
num_str = ["one", "two", "tree", "four", "five"]
num_str.pop(2)
インデックス「2」の位置の要素をpop()で削除します。
実行するとこうなります。
削除された要素が表示され、リストを表示すると要素の削除後のリストが表示されます。
続けて、インデックスを指定せずにpop()を実行してみます。
削除された末尾の要素が表示され、リストもそのようになっているのがわかります。これはpop(-1)でやっても同じことを示します。
index()で要素の位置を調べる
リストの中のある要素が、どのオフセット(位置)にあるのかを調べるにはindex()を利用すれば可能です。
リスト.index(要素)の形で使います。
次のコードで試してみましょう。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
x.index(6)
xというリストの要素「6」の位置がどこにあるかを調べるコードです。
実行するとこうなります。
インデックス「5」の位置に要素「6」があることがわかりました。
in演算子で要素の有無を調べる
リストの中に要素が入っているかを調べるには、in演算子を利用します。
要素 in リスト、という形で利用し、TrueかFalseを返します。
同じリストで調べてみましょう。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
7 in x
8 in x
リストの中に7が入っているかどうか、8が入っているかどうかを調べるコードです。
実行してみるとこうなります。
7はTrueを返しているのでこのリストの中にあることを示しています。8はFalseなのでリストの中にはありません。
sort()、reverse()で並び替える
今度はリストの要素を並び替えてみましょう。sort()で昇順になります。reverse()は逆ですね。
リスト.sort()の形で利用します。逆順にするにはreverse=Trueのオプションをつけるか、reverse()を利用します。
3つ合わせてやってみましょう。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
x.sort()
x.sort(reverse=True)
x.reverse()
対話型シェルでそれぞれ実行するとこうなります。
それぞれソートされているのがわかりますね。順に上のリストの要素の順番を順に変えているのがわかると思います。これは、sort()を使うと、表示だけ並び替えるというのではなく、リスト自体の要素を並び替えて変更しているということになります。
count()で特定の要素の個数を数える
リスト内に特定のデータがいくつ格納されているか調べるにはcount()を使います。
リスト.count(要素)の形で使います。
こちらの例でやってみましょう。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
x.count(4)
リストの中に「4」がいくつあるか計算します。
実行するとこうなります。
リストの中に「4」が3個入っていることがわかりました。
split()で分割、join()で結合
今度は文字列をセパレータで分割してリストに格納し、そのリストから再び文字列に結合するということをやってみます。
文字列.split(“セパレータ”)の形で分割します。
split()で分割して再びjoin()で結合するコードを書いてみます。
s = "I am playing with Python."
s_split = s.split(" ")
print(s_split)
j = " ".join(s_split)
print(j)
文字列を変数sに代入し、まず、セパレータをスペース(” “)にして分割してリスト化します。それを変数に格納し、再びjoin()で結合しています。
今回はAtomを使って実行してみましょう。ファイル名はlist.pyにしています。
最初に、スペースで区切られた部分で要素に分割されリストに入れられています。これを再び、スペースを使って繋げて表示されているのがわかりますね。
len()で要素数を調べる
リストに含まれている要素の数を数えるにはlen()を使います。
len(リスト)の形で利用します。
実際に数えてみましょう。
x = [1, 4, 3, 4, 2, 6, 1, 4, 7, 3, 5, 5, 9]
len(x)
このコードを実行するとこうなります。
このリストには13個のデータが格納されているのがわかりました。実際に数えても13になりますね。
まとめ
Pythonのリストにも様々なメソッドがあります。
ここではよく見かける代表的なリストメソッドをみてきました。
もちろん他にもたくさんあるので、今後学んで行く中で触れるものがあればその都度マスターしていきましょう。