05-Python

Python(Part.20)| python【リスト(利用編-5)】

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

目標

(pythonの)「リスト」の同一性について理解する。
「is演算子」を利用してオブジェクトの同一性を比較できる。
(pythonの)「リスト」の代入について動きを理解する。

(pythonの)「リスト」の同一性

同一のリストを扱う手順

(pythonの)「リスト」は作成されたときに「個別の実体」として存在するようになります。変数は実体への紐づけなので、いくつも変数を設定することが可能です。

ほわほわ

実体に対して名前を付けたものが変数です。お友達(実体)の呼び方(あだ名)のような関係です。

お友達の「たまにゃん」をリストに見立てると、プログラムは次のように書けます。

tama_nyan = [1, 2, 3, 4, 5]

ここで「うさぎちゃん」が「おおかみくん」に「たまにゃん」を紹介したとします。すると「おおかみくん」は「たまにゃん」と友達になって「たま」と呼ぶようになりました。

ほわほわ

いろいろな呼び方であっても同じものを指しているというイメージが重要です。

リストのプログラムで、この、お友達の紹介は、「変数から変数への代入」として次のように書けます。

tama_nyan = [1, 2, 3, 4, 5]
tama = tama_nyan

同一のリストかを確認する方法

「tama_nyan」と「tama」が同じリストを扱っているのかを確認します。この確認には識別番号を確認できる「id()」を利用します。また、「is演算子」を利用してオブジェクトの同一性を真偽値で確認します。

tama_nyan= [1, 2, 3, 4, 5]
tama = tama_nyan

print(id(tama_nyan))
print(id(tama))
print(tama_nyan is tama)

実行結果:識別番号が同一で、is演算子の結果も「True」となっています。これで、ふたつの変数が同じものを指していることが確認できます。

複数の変数に紐づいているリストを扱うときの注意点

複数の変数に紐づいているリストを操作するときは次の話と似た意味で注意が必要です。

「たま」のお友達の「おおかみくん」が「たま」にはサングラスは必要ないと思って、「たま」の「サングラス」を捨ててしまいました。この場合、今後、別の動物たちも「サングラスをはずしたたま」を見ることになります。

これを、プログラムで記述すると次のようになります。

tama_nyan = [1, 2, 3, 4, 5]
tama = tama_nyan

tama.clear()

print(tama_nyan)
print(tama)

実行結果:両方の変数は常に同じリストを扱っているので、いずれの変数から確認してもリストは空となっています。

(pythonの)「リスト」の非同一性

続いて、リストの非同一性について考えます。非同一性ということは、「同じでない」ということで、先ほどの動物たちのお話で例えると、「たま」以外のネコが、 もう一匹、現れたと言えます。

この場合、この新しいネコは、さきほどの「たま」とは別のネコなので、同一ではないことが分かります。このネコの名前を「みけ」とすると次のように考えることができます。

これを、プログラムで記述すると次のようになります。

tama_nyan = [1, 2, 3, 4, 5]
mike_nyan = [1, 2, 3, 4, 5]

このふたつは、同じ「ネコ」ですが、実体は別々です。リストではいずれも「[1,2,3,4,5]」の同じリストに見えますが、「tama_nyan」と「mike_nyan」が紐づいている実体は別のものとなっています。

非同一のリストかを確認する方法

「tama_nyan」と「mike_nyan」が違うリストを扱っているのかを確認します。この確認も「id()」と「is演算子」を利用します。

tama_nyan = [1, 2, 3, 4, 5]
mike_nyan = [1, 2, 3, 4, 5]

print(id(tama_nyan))
print(id(mike_nyan))
print(tama_nyan is mike_nyan)

実行結果:識別番号が異なっていて、is演算子の結果も「False」となっています。これで、ふたつの変数が違うものを指していることが確認できます。

次の操作では片方のリストのみ、変更されたことが確認できます。

tama_nyan = [1, 2, 3, 4, 5]
mike_nyan = [1, 2, 3, 4, 5]
print('変更前--------------')
print(tama_nyan)
print(mike_nyan)

tama_nyan = 10
print('変更後--------------')
print(tama_nyan)
print(mike_nyan)

実行結果

今回は以上になります。

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

ブックマークのすすめ

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

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

2024年8月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(Part.--)| python【ユーザー定義関数(1)】| The Basics of python [user-defined function(1)]

2024年8月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
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