python勉強始めて最初の壁
pythonの勉強をスタートして最初に頭こんがらがった概念でした。
自分の備忘用且つアウトプット用として記事に残します。
同じ悩みを持つ方の手助けになれば嬉しいです。
本記事は誤りが多い可能性が高いです。
初心者だったあの頃を思い出しながら笑ってネタに昇華してください。。
【結論】データを格納/操作する為のオブジェクト
名前が異なるという事はそれぞれ宣言の方法も異なると考えて良いです。
かなりざっくりそれぞれの宣言方法を下にまとめてみました。
リスト
list = [1,2,3] #list型オブジェクトの宣言とデータ格納
print(list) # 出力結果 [1,2,3]
タプル
tuple = (1,2,3) #タプル型オブジェクトの宣言とデータ格納
print(tuple) # 出力結果 (1,2,3)
辞書
この方だけ宣言方法がちょっと複雑です。
値に紐づくキーが必要と覚えちゃいます。
dict = {1:"a",2:"b",3:"c"} # 辞書型オブジェクトの宣言とデータ格納
print(dict) # 出力結果 {1:"a",2:"b",3:"c"}
ただ、実際に↑にまとめた方法での使い方はほとんど無いはずです。
単にprintするだけではそれぞれのデータ操作が全然できていない為です。
実際の使い方
オブジェクトの宣言方法については前段の違いを見ていただければと思います。
ではどういった違いが出てくるのかもう少し詳しくオブジェクト別にまとめます。
(オブジェクト別のファイル名は前段と同じです)
リストとタプル
リスト
#list = [1,2,3] #list型オブジェクトの宣言とデータ格納
print(list[2]) # 出力結果 3
タプル
#tuple = (1,2,3) #タプル型オブジェクトの宣言とデータ格納
print(tuple[2]) # 出力結果 3
...一緒、、、(ちなみに[ ]内の数値が負の数だと要素の後ろから取り出します)
もちろん違いはあります。
ミュータブル:変更可能かイミュータブル:変更不可能かによる違いです。
ここでいう変更可能/不可能というのは要素の値を更新できるか否かと考えて良さそうです。
- リスト:ミュータブル(変更可能)
- タプル:イミュータブル(変更不可能)
#tuple = (1,2,3) #タプル型オブジェクトの宣言とデータ格納
tuple[2] = 0
print(tuple[2]) # エラー出力「TypeError: 'tuple' object does not support item assignment」
、、、リストだけで良くない?
と思いましたがオブジェクトが区別されている以上タプルにも良さあります。
-
- 不変だからこそ良い
名前など一度入力された後に変更されてほしくないデータを格納するとき
また、辞書型のキーとして使えるという点もあります。
例えば緯度経度と建物を紐づけて辞書型に格納する場合、緯度経度はそうそう変わらない、というか変わっちゃいけないのでタプル型で一度宣言してキーとして使うといった使い方も良いです -
- 処理速度が速い
このメリットを享受することはめっちゃでかいデータを格納しない限り少ないかと思いますがリストよりは処理速度が速いそうです
以上を踏まえてここぞというタイミングでそれぞれ使い勝手の良い方を使っちゃいましょう。
辞書
#dict = {1:"a",2:"b",3:"c"} # 辞書型オブジェクトの宣言とデータ格納
print(dict[2]) # 出力結果 b
リストやタプルと違って引数で指定したキーに紐づく値を引っ張ってきてくれます。
0相対とかそういった事も考えなくて良さそうです。
辞書型はミュータブル(変更可能)なオブジェクトです。
更により深く辞書型の辞書や、専用のメソッドを使って要素の追加(.append)や要素の削除(.pop)なんかもできたりします。
一旦ここまで
色々思い出しながら記事を書いていたので途中途中更にこんがらがってしまいましたが各オブジェクトの簡単な紹介と説明をさせていただきました。
今後も覚えていったことをどんどんアウトプットしようと思いますので目に留まったら見ていただけると嬉しいです。