LoginSignup
0
1

More than 3 years have passed since last update.

Python コレクションの簡単まとめ

Last updated at Posted at 2020-09-16

コレクション

  • 多くの要素を持つデータ型。複数の値をまとめる時に使われる。
  • 2種類ある。
    • シーケンス型: 要素に順番があり、順序でアクセス可能
      • 順番の変更が可能なものとそうでないものがある
    • マッピング型: 順番に意味なし
順番あり 順番なし
変更可能 リスト 辞書、集合(Set)
変更不可能 タプル、文字列 集合(Frozen Set)

リスト

変更可能なシーケンス型。角括弧[]で囲んで記述する。異なる方の要素を含むことができる。

>>> squares = [1, 4, 9, 16, 25, 36]

インデックスを指定して特定の値を取り出すこともできる。

1 4 9 16 25 36
インデックス 0 1 2 3 4 5
インデックス(-) -6 -5 -4 -3 -2 -1
>>> squares = [1, 4, 9, 16, 25, 36]
>>> squares[2]
9
>>> squares[-4]
9

スライス([始点:終点-1])を使うと、一定範囲の値を取り出すことができる。

>>> squares[2:5] # 3〜5番目の値を出力
[9, 16, 25]
>>> squares[-3:] # 後ろから3番目〜最後までの値を出力
[16, 25, 36]

値の位置を指定して値を変更することもできる。

>>> squares[4] = 30
>>> squares[-5] = 7
>>> squares
[1, 7, 9, 16, 30, 36]

スライスで値を変更することもできる。

>>> squares[2:5] = [10,20,35]
>>> squares
[1, 7, 10, 20, 35, 36]

リストには文字列なども入れられる。できることは数値と同じ。

インプレース演算

リストの値を変える演算をインプレース演算という。

.sort()メソッド

リスト内の値を並び替える。sorted()関数と似ているが、リストの中身が書き換えられるかどうかが異なる。

sorted()関数
>>> list_a = [1, 4, 3, 5, 2]
>>> sorted(list_a) # 値の並べ替え
[1, 2, 3, 4, 5]
>>> list_a # リストの中身は書き換えられない
[1, 4, 3, 5, 2]
>>> list_a = sorted(list_a) # リストの中身を書き換えたい場合はこの形で
>>> list_a
[1, 2, 3, 4, 5]

.sort()メソッドを使うと

.sort()メソッド
>>> list_a = [1, 4, 3, 5, 2]
>>> list_a.sort()
>>> list_a
[1, 2, 3, 4, 5]

リストの主なメソッド

メソッド 操作内容
list.append(x) リストの末尾に要素を1つ追加する
list.extend(iterable) あるイテレータのすべての要素を末尾に追加する
list.insert(i, x) インデックスiで指定した位置に要素xを追加する
list.remove(x) リストの中にxと等しい値がある場合、その最初の要素を削除する。等しい値がない場合はValueError
list.pop() リストの末尾を削除し、その要素を返す。括弧にインデックスを指定すると、特定の要素を削除し、その要素を返す。
list.clear() リストの全要素を削除する
list.index(x) リストの中にxと等しい値がある場合、その要素のインデックスを返す。等しい値がない場合はValueError
list.count(x) リストの中にあるxの数を返す
list.reverse() リストの要素を逆順にする

del文

リストの要素を削除する方法は.remove()や.pop()だけではない。del文でも削除可能。

>>> list = [1, 2, 3, 4, 5]
>>> del list[2] # インデックスを指定して特定の要素を削除する
>>> list
[1, 2, 4, 5]
>>> del list[1:3] # スライスを使って一定範囲の要素を削除する
>>> list
[1, 5]

タプル

変更不可能なシーケンス型。括弧で囲んで記述する。

>>> numbers = (1, 2, 3, 4, 5, 6)

インデックス、スライスでできることはリストと同じ。

リストとタプル、どう使い分けるのか

値を変更したくない場合はタプル。

  • アプリケーション内の設定値
  • CSVのレコードデータの保持
  • トランプのカード表現('Spade', '1')

など

辞書

キー(key)と値(value)の組み合わせで管理する、順番を持たない(インデックスは使えない)型。この2つを波括弧で囲んで記述する。

キーを指定すると値を取り出すことができる。また、キーを指定して値を変更することもできる。

>>> dacho = {'higo':'leader', 'jimon':'muscle', 'ueshima':'kiss'}
>>> dacho['ueshima']
'kiss'
>>> dacho['ueshima'] = 'kururimpa'
>>> dacho['ueshima']
'kururimpa'

値だけが欲しい場合は.values()メソッドを、キーと値をセットで欲しい場合は.items()メソッドを使う。

>>> dacho = {'higo':'leader', 'jimon':'muscle', 'ueshima':'kiss'}
>>> for d in dacho.values():
...   print(d)
... 
leader
muscle
kiss
>>> for d in dacho.items():
...   print(d)
... 
('higo', 'leader')
('jimon', 'muscle')
('ueshima', 'kiss')

集合(Set)

複合する要素を持たない、順番も持たない(インデックスは使えない)型。波括弧で囲んで記述する。要素が重複している場合は1つにまとめられる。可変。

>>> hollywood = {'h', 'o', 'l', 'l', 'y', 'w', 'o', 'o', 'd'}
>>> hollywood
{'o', 'w', 'h', 'y', 'd', 'l'}

集合(Frozen Set)

複合する要素を持たない、順番も持たない(インデックスは使えない)型。波括弧で囲んで記述する。要素が重複している場合は1つにまとめられる。不変。

集合を用いた集合演算

>>> a = {1, 2, 3}
>>> b = {2, 3, 4}
>>> a | b # 和(aかbに含まれる)
{1, 2, 3, 4}
>>> a.union(b)
{1, 2, 3, 4}
>>> a & b # 積(aとbに共通)
{2, 3}
>>> a.intersection(b)
{2, 3}
>>> a - b # 差(aにのみ含まれる)
{1}
>>> a.difference(b)
{1}
>>> a ^ b # 対称差(aもしくはbにのみ含まれる)
{1, 4}
>>> a.symmetric_difference(b)
{1, 4}

メソッドの後ろに_updateを付けると、演算の結果を変数に代入できる。

文字列の扱い

文字列は要素を持つ変更不可能なイテレータとして扱われる。スライスを使って一定範囲を取り出すことも可能。

>>> str = 'abcdefg'
>>> str[2:5]
'cde'
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1