データ構造-listのメソッド、関数
記事の内容
この記事では、Python組み込みのデータ構造の1つであるlistオブジェクトを操作するメソッドを紹介します。
ざっと眺めてみてどんなことができそうか確認したら、索引としてご利用ください。
***わからない用語があるときは索引ページへ***
1.リストオブジェクトで使えるメソッド
リストオブジェクトの主なメソッドをサンプルコードで紹介します。
1.1.append(elem)
リストの一番最後に、引数elemで指定する要素を追加します。
appendメソッドは、リストオブジェクトを書き換えます。
サンプル
##末尾に要素を追加する
lst = [0, 1, 2, 3, 4]
print("元のlist1 データ :", lst)
lst.append(5)
print("末尾に要素を追加 :", lst)
実行結果
元のlist1 データ : [0, 1, 2, 3, 4]
末尾に要素を追加 : [0, 1, 2, 3, 4, 5]
1.2.insert(i, elem)
引数iは整数型、引数elemは追加する要素。
要素を追加する位置をインデックスで指定して追加します。元のlistでa以降の要素は1つずつ後ろにずれます(元のインデックスに1足される)。
このメソッドは、リストオブジェクトを書き換えます。
サンプル
##位置を指定して要素を追加する
lst = [0, 1, 2, 3, 4]
print("元のlist1 データ :", lst)
lst.insert(3, 2.5)
print("4つめに要素を追加 :", lst)
実行結果
元のlist1 データ : [0, 1, 2, 3, 4]
4つめに要素を追加 : [0, 1, 2, 2.5, 3, 4]
1.3.pop(i)
引数iは整数型、もしくは省略。
iで指定したインデックスの要素を削除します。引数を省略した場合は、最後の要素を削除します。
このメソッドは、リストオブジェクトを書き換えます。
##最後の要素を削除する
lst = [0, 1, 2, 3, 4]
print("元のlist1 データ :", lst)
lst.pop()
print("最後の要素を削除 :", lst)
実行結果
元のlist1 データ : [0, 1, 2, 3, 4]
最後の要素を削除 : [0, 1, 2, 3]
要素のインデックスを指定して削除
##インデックスを指定して要素を削除
##インデックスは0からはじまる
lst = [0, 1, 2, 3, 4]
print("元のlistデータ :", lst)
lst.pop(3)
print("4つめの要素を削除 :", lst)
実行結果
元のlistデータ : [0, 1, 2, 3, 4]
4つめの要素を削除 : [0, 1, 2, 4]
1.4.remove(elem)
引数elemで削除する要素を指定して削除。指定した要素が複数ある場合は、最初の要素を削除します。
指定した要素が存在しない場合は、例外処理でプログラムが停止します。
このメソッドは、リストオブジェクトを書き換えます。
---以下、補足---
例外(exception)とは、プログラムの書き方(文法)は正しいが、正常に実行できないプログラムを実行しようとしたときに発生する実行エラーのことです。ここでは、リストから要素を削除しようとしたが、削除指定した要素が存在しないので例外となります。
これに対し、書き方の誤り(プログラムの記述規則違反)のことを、文法エラー、またはシンタックスエラーといいます。PyDev-Eclipseは作成中のプログラムの文法エラーをチェックしてくれるので、書き間違えたときはすぐに修正できるようになっています。
---補足ここまで---
##削除する要素を指定して削除
lst = [0, 1, 2, 3, 4, 3, 2, 1, 0]
print("元のlistデータ :", lst)
lst.remove(2)
print("最初の2を削除 :", lst)
実行結果
元のlistデータ : [0, 1, 2, 3, 4]
最初の2を削除 : [0, 1, 3, 4, 3, 2, 1, 0]
1.5.extend(iterable)
引数"iterable"はリストオブジェクト、またはイテラブル(iterable)なオブジェクト。元のリストの最後から、引数で指定したオブジェクトの要素を追加します。
イテラブルなオブジェクトとは、リストオブジェクトと同じように、複数の要素をもち、要素の順番を管理していて
<オブジェクト>[<インデックス>]
の形式で要素を指定できるすべての種類のオブジェクトのこと。
リストオブジェクト以外ではタプル、pandasのseriesやdataframe、numpyのオブジェクトなどがあります。
このメソッドは、リストオブジェクトを書き換えます。
##リストの後ろにリストを拡張
lst1 = [0, 1, 2, 3, 4]
lst2 = [5, 6, 7, 8, 9]
print("元のlistデータ :", lst1)
print("拡張するlistデータ :", lst2)
lst1.extend(lst2)
print("拡張されたlistデータ :", lst1)
実行結果
リストオブジェクトを連結するだけの場合は
lst1 = lst1 + lst2
でも結果は同じになる。
元のlistデータ : [0, 1, 2, 3, 4]
拡張するlistデータ : [5, 6, 7, 8, 9]
拡張されたlistデータ : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.6.count(elem)
引数elemで指定した要素がいくつリストに含まれるか数える。
##指定した要素の数を数える
lst = [0, 1, 2, 3, 4, 3, 2, 1, 0]
print("元のlistデータ :", lst)
n = lst.count(3)
print('3 の数を数える :', n, "個")
実行結果
元のlistデータ : [0, 1, 2, 3, 4, 3, 2, 1, 0]
3 の数を数える : 2 個
1.7.index(obj)
引数objと合致する最初の要素のインデックスを返します。合致する要素がない場合は例外処理が発生します。
tuple1 = (0, 1, 2 , 1, 0)
print("1のインデックス:",tuple1.index(1))
実行結果
1のインデックス: 1
1.8.sort(reverse=False)
引数を省略、または"reverse=False"と指定した場合は、元のリストの要素を昇順(小さい順、アルファベット順、五十音順)に並び替えます。並び変えのことを「ソート(sort)」ともいいます。
このメソッドは、リストオブジェクトを書き換えます。
##リストの要素を昇順に並び替え
lst1 = [3, 4, 2, 0, 1]
print("元のlistデータ :", lst1)
lst1.sort()
print("昇順にソート :", lst1)
実行結果
元のlistデータ : [3, 4, 2, 0, 1]
昇順にソート : [0, 1, 2, 3, 4]
引数に"reverse=True"と指定すると降順に並び替える。
##リストの要素を降順に並び替え
lst1 = [3, 4, 2, 0, 1]
print("元のlistデータ :", lst1)
lst1.sort(reverse=True)
print("降順にソート :", lst1)
実行結果
元のlistデータ : [3, 4, 2, 0, 1]
降順にソート : [4, 3, 2, 1, 0]
1.9.reverse()
元のリストの順番をさかさまに並べ替えます。
このメソッドは、リストオブジェクトを書き換えます。
##リストの要素をさかさまに並び替え
lst1 = [3, 4, 2, 0, 1]
print("元のlistデータ :", lst1)
lst1.reverse()
print("さかさまに並び替え :", lst1)
実行結果
元のlistデータ : [3, 4, 2, 0, 1]
さかさまに並び替え : [1, 0, 2, 4, 3]
1.10.copy()
元のリストオブジェクトのコピーを返します。リストオブジェクトは参照渡しのなので、値渡しをする際はこのメソッドを使います。参照渡しと値渡しについては、前の記事を参照ください。
##値渡し
list1 = [1, 2]
list2 = list1.copy()
list2.append(3)
print("元のリスト:", list1)
print("書き換えたリスト:", list2)
実行結果
元のリスト: [1, 2]
書き換えたリスト: [1, 2, 3]
2.list関連の組み込み関数
2.1.len(data_structure_obj)
リスト、辞書、タプルなどのデータ構造のオブジェクトを引数にとって、要素数を返します。
##listの要素数を取得
lst1 = [0, 1, 2, 3, 4]
print("元のlistデータ :", lst1)
print("listの要素数 :", len(lst1), "個")
実行結果
元のlistデータ : [0, 1, 2, 3, 4]
listの要素数 : 5 個
2.2.sum(iterable)
数値型のデータを要素とするイテラブルなオブジェクトを引数にとって、要素の合計値を返します。
##listの要素の合計を計算
lst1 = [0, 1, 2, 3, 4]
print("元のlistデータ :", lst1)
print("要素の合計値 :", sum(lst1)
実行結果
元のlistデータ : [0, 1, 2, 3, 4]
要素の合計値 : 10
2.3.list(iterable)
タプルなどのイテラブルなオブジェクトをリストオブジェクトに変換(キャスト)します。
<変数> = list(<イテラブルなオブジェクト>)
前の記事 次の記事
この記事が気に入ったらサポートをしてみませんか?