05-Python

Python(Part.32)| python【タプル(利用編-4)】

python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...

目標

(pythonの)「タプル」のもつ「index()」「count()」の利用方法について理解する。
(pythonの)「タプル」での「del文」の利用方法について理解する。

(pythonの)「リスト」と「タプル」(再掲載)

(pythonの)「リスト」と「タプル」の共通点

(pythonの)「リスト」と「タプル」には次の点で共通しています。

  • イテラブルオブジェクトである。
  • インデックス式・スライス式を利用した要素の取り出しが可能。
  • 「len()関数」「max()関数」「min()関数」「sum()関数」が利用可能。
  • 「indexメソッド」「countメソッド」を持つ。
  • 「+演算子」を利用しての連結、「*演算子」を利用しての繰り返しが可能。
  • 「in演算子(帰属性判定演算子)」を利用して要素の確認が可能。

インデックス式・スライス式を利用した要素の変更はできません。

(pythonの)「リスト」と「タプル」の相違点

(pythonの)「リスト」と「タプル」には次の点で違いがあります。

内容リストタプル
要素の変更
ミュータブル
×
イミュータブル
インデックス式値の取り出し・値の変更値の取り出しのみ
スライス式値の取り出し・値の変更値の取り出しのみ
appendメソッド×
extendメソッド×
insertメソッド×
removeメソッド×
popメソッド×
clearメソッド×
reverseメソッド×
copyメソッド×
内包表記×
del文
(要素の削除まで可能)

(オブジェクトの解放のみ)
辞書のキーとして扱える×
累算演算子での連結インプレースインプレースでない
累算演算子での繰り返しインプレースインプレースでない

インプレース(in-place)とは「利用しているオブジェクト」に対して直接、値の追加が行えることを意味します。インプレースでない場合は、値の追加を行う用の「新しいオブジェクト」を作成します。

(pythonの)「タプル」の操作(メソッド)

メソッド:メソッドはクラスやオブジェクトを操作するために、その内部で定義した関数のことです。(他の言語ではメンバー関数と呼ばれたりします。)

ほわほわ

優しく言い換えると、「オブジェクト専用で利用できる関数」といえます。(pythonの)「タプル」でもタプルを操作するためのメソッドが、しっかりと準備されています。

「タプル」は「リスト」と同様にオブジェクトが作成されると、要素に値が設定される以外にも、必要な処理(メソッド)が準備されます。

上のキャプチャの場合、リストの名前を利用して「tuple_num.index(2)」のようにメソッドを呼び出します。

リストやタプル、クラスなどのオブジェクトはプログラム内に複数存在する(作成する)ことできます。この場合に「tuple_num1」への処理なのか、「tuple_num2」への処理なのか、または、更に別のオブジェクトへの処理なのか、きちんと明示する必要があります。

例えば「tuple_num1」「tuple_num2」「tuple_num3」の3つのリストが存在したとすると「tuple_num2」への処理であれば「「tuple_num2.メソッド」と記述します。明示しない場合は処理として正しく行われません。

indexメソッド

list.index(x[, start[, end]])
リスト中で x と等しい値を持つ最初の要素の位置をゼロから始まる添字で返します。 該当する要素がなければ ValueError が送出されます。

任意の引数である start と end はスライス記法として解釈され、リストの探索範囲を指定できます。返される添字は、start 引数からの相対位置ではなく、リスト全体の先頭からの位置になります。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

リファレンスの引用では「リスト」の操作方法が記載されています。「リスト」を「タプル」と読み替えて内容を確認してください。

indexメソッドを利用すると引数に指定した値が存在するかを確認できます。値が存在する場合は、該当するインデックス番号が返され、存在しなければValueErrorとなります。

次のプログラムでは値「3」のインデックス番号が返されます。要素は先頭から確認されるのでリストな中に同じ値が複数存在する場合は、インデックス番号の若い数値が返されます。

tuple_num1 = ( 6, 3, 10, 8, 7, 5, 3, 9 )

print(tuple_num1.index(3))

実行結果

ほわほわ

今回は値「3」はタプル内に2カ所存在しています。このうちインデックス番号の小さい方「1」が返されるようになっています。

indexメソッドでは確認の範囲を指定することもできます。

index(検索する値,検索の開始するインデックス番号,検索を終了するインデックス番号+1)

リファレンスにある[]ブラケットはプログラム内では使用しません。あくまでも説明として記載されています。(list.index(x[, start[, end]])

list.index(x[, start[, end]]) の end部分はインデックス番号+1となります。

次のプログラムではインデックス番号「2」から「6」までの範囲を指定しています。

tuple_num1 = ( 6, 3, 10, 8, 7, 5, 3, 9 )

print(tuple_num1.index(3, 2, 7))

実行結果

ほわほわ

end の部分は省略して start だけ指定することも可能です。

countメソッド

list.count(x)
リストでの x の出現回数を返します。

https://docs.python.org/ja/3.11/tutorial/datastructures.html

引数に指定した値が存在しないときは「0」を返します。エラーにはなりません。

リファレンスの引用では「リスト」の操作方法が記載されています。「リスト」を「タプル」と読み替えて内容を確認してください。

tuple_num1 = ( 6, 3, 10, 8, 7, 5, 3, 9 )

print(tuple_num1.count(3))
print(tuple_num1.count(4))

実行結果

del文

「del文」はpythonの単純文で「変数」と「リテラル」の結びつきを解消させることのできる文です。また、「del文」はミュータブルなオブジェクトであるリストの場合、要素を個別に指定することも可能ですが、イミュータブルなオブジェクトであるタプルでは変数とタプルオブジェクトの紐づけを削除するときにのみ利用できます。

del文で変数との結びつきを解消されたオブジェクトは、他の変数との結びつきがない場合、メモリが解放され削除されることになります。

del文で変数を指定した場合、その変数は削除されます。

tuple_num = ( 6, 3, 10, 4, 5, [8, 9, 7], 11 )
print(tuple_num)

# タプル内のリストの要素が解放されます。
del tuple_num[5][0]
print(tuple_num)

実行結果

tuple_num = ( 6, 3, 10, 4, 5, [8, 9, 7], 11 )
print(tuple_num)

# 変数が削除されます。
del tuple_num

# 変数がないためエラーとなります。
print(tuple_num)

実行結果(削除が無事完了し、変数名からタプルの呼び出しができなくなっています。)

tuple_num = ( 6, 3, 10, 4, 5, [8, 9, 7], 11 )
print(tuple_num)

# インデックス「2」の値(tuple_numの「10」)は削除できません。
del tuple_num[ 2 ]
print(tuple_num)

実行結果(イミュータブルのタプルでは各要素を削除できません。)

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
05-Python

Python(Part.24)| python【反復構造(for-else文)】| [Iterative Structures(for-else statement)]

2024年7月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
05-Python

Python(Part.27)| python【選択構造(match文)(2)】|  [Selection Structure] (match statement)(2)

2024年7月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
05-Python

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師

2024年3月20日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
05-Python

Python(Part.25)| python【反復構造(二重for文)】| [Iterative Structures (double for statement)]

2024年7月4日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site