Pythonデフォルトデータ構造-list、tuple、set、dictionary


ListとTuple


ListとTupleの共通点

  • その他のタイプのデータを含めることができます.
  • ["string", 1, 2]
  • ("string", 1, 2)
  • 複数種類のデータを格納可能
  • iterable
  • シーケンス(idx)があります.
  • 리스트 + 리스트튜플 + 튜플ですが리스트 - 리스트튜플 - 튜플・ダメ
  • ListとTupleの違い

  • list  []価格をめぐっては、tuple  ()で価格を囲みます.
  • listは可変、tupleは不変
  • list  list.append()list.remove()  などの方法でリスト自体の値を変更できます.
  • 逆にtupleはlist等に変更できないappend()remove().
  • 以下のテクニックのみで修正後の効果が得られる
  • tupleの値をコピーして新しいlistに変更し、listの値を新しいtuple<-最終的にlistで列挙
  • また、tuple間のプラス記号(+,concation)はappendと類似可能
  • 可変(可変)と不変(不変)

  • list,set,dictが可変なvs tupleは不変
  • 可変表示値が変化し、不変表示値が変化している
  • list => mutable
  • dictioary => mutable
  • tuple => immutable
  • Tupleは変わらないって言ったでしょ?なぜtupleの間はもっとひどいのですか?

  • まず変わらないことはないと思うがappend()remove()方法.
  • プラスに見えるが、実際にはtupleは修正されていない
  • # list의 더하기
    list_a = [1, 2, 3]
    list_b = [4, 5, 6]
    
    print("before:", id(list_a))
    
    list_a += list_b
    
    print("after:", id(list_a))
    
    # 결과
    before: 140718837238112
    after : 140718837238112
  • list中  +演算も上記の通り  list_aのid(メモリアドレス)値は同じ.つまり、同じメモリ領域に含まれています.
  • id()関数を使用して、変数のメモリアドレスを決定できます.
  • # tuple의 더하기
    tuple_a = (1, 2, 3)
    tuple_b = (4, 5, 6)
    
    print("before:", id(tuple_a))
    
    tuple_a += tuple_b
    
    print("after:", id(tuple_a))
    
    # 결과
    # before: 2852015629312
    # after : 2852015230784
  • 逆にtupleに対して  +  演算前後の  tuple_aメモリ(id値)アドレスが異なります.
  • すなわち、 tuple自体は修正できないのでtupleを  +演算すると
  • Python新しいメモリスペースにtupleを作成
  • 新しいtupleのtuple要素を加えた後
  • そこで元のtuple変数に名前を付ける.
  • 結果tupleは  +  演算による修正(可変)ではなく、便宜上の修正であり、本質的には不変の性質のために再作成(?)いいと思って
  • どうして離れなければならないの?

  • tupleと発表し、開発者の予期せぬ修正値を防止!
  • 石橋がすぐそばにあるのに、なぜ揺れ橋を渡らなければならないのですか?
  • Set vs Dictionary


    SetとDictionaryの共通点

  • 重複しない収集資料型.
  • SetとDictionaryの違い

  • setキー値のみ存在.
  • dictionaryは、キー値で値を検索するハッシュテーブル構造である.
  • dictionaryは、キー値は一定でなければならず、値は可変であってもよいことを示す.
  • キー値はstring、tuple
  • キー値でリストできない=>listなので
  • setは可変です.
  • References

  • 参照リンク:https://velog.io/@full_accel/Python-Set-Dictionary-List-Tuple
  • 変わりやすい・変わらない:https://ledgku.tistory.com/54