←目次へ
python,Qiita初心者なので、備忘録として記載していきます。
なにせ初心者なので、知識不足はご容赦ください。
知識を深めながら追記していきたいと思います。
コレクションとは
- 複数のデータを格納することから「コレクション」「コンテナ」などと呼ぶこともある
- また、そのうち「リスト」と「タプル」はシーケンス型オブジェクトとも呼ぶこともある
※「range」「文字列」もそれにあたる
オブジェクト生成後に要素を変更できる:mutableオブジェクト
オブジェクト生成後に要素を変更できない:immutableオブジェクト
生存期間中変わらないハッシュ値を持つ:hashableオブジェクト
各コレクションの違い
データ型 | 変更可否 | 要素の順序 | インデックス | 説明 |
---|---|---|---|---|
リスト | 〇 | 〇 | 〇 | 任意の型のデータを格納できる |
タプル | × | 〇 | 〇 | 任意の型のデータを格納できる |
辞書 | 〇 | × | × | キーと値の組で表されるデータを格納する |
集合 | 〇 | × | × | 重複の無いリストを格納する |
集合(frozenset型) | × | × | × | 重複の無いリストを格納する |
リスト型
タプル型
辞書型(連想配列)
集合型
集合型(frozenset型)
同じ要素数のシーケンスの比較演算
- タプルやリストなどのシーケンスオブジェクトは比較演算できる
シーケンス同士の比較は、先頭の要素から順番に同じインデックス同士の値を比較して、先に小さい値となったシーケンスが小さい値となる
# -- リストの場合 --
list1 = ['a', 'b', 'c']
list2 = ['a', 'b', 'd']
print(list1 <= list2)
True
list3 = ['a', 'b', 'c']
list4 = ['a', 'b', 'b']
print(list3 <= list4)
False
# -- タプルの場合 --
value1 = (1, 2, 3, 4)
value2 = (1, 2, 3, 5)
print(value1 < value2)
True
value3 = (1, 2, 3, 4)
value4 = (1, 2, 3, 3)
print(value3 < value4)
False
dic1 = {'a': 0, 'b': 1}
dic2 = {'b': 1, 'a': 0}
print(dic1 == dic2)
True # 全てのキーと値が等しいので別オブジェクトだがTrue
# -- 集合の場合 --
set1 = {"A", "B", "C"}
set2 = {"B", "C", "A"}
print(set1 == set2)
True # set1の要素がset2にすべて含まれており、set2の要素がset1にすべて含まれているのでTrue
異なる要素数のシーケンスの比較演算
比較するシーケンス同士の長さが異なる場合、短いシーケンスの要素と長いシーケンスの要素を比較してすべて等しければ、短い要素のほうが小さい値となる
# -- リストの場合 --
>>> list1 = ['a', 'b', ]
>>> list2 = ['a', 'b', 'C']
>>> print(list1 <= list2)
True
# -- タプルの場合 --
value1 = (1, 2, 3)
value2 = (1, 2, 3, 4)
print(value1 < value2)
True
異なるコレクションの比較演算はできない
list1 = [1, 2, 3]
value2 = (1, 2, 3)
print(list1 <= value2)
# TypeError: '<=' not supported between instances of 'list' and 'tuple'
# 型が違うためエラーになる
- 辞書型や集合型は比較演算できない