リスト(list)
特徴
- 複数の値を1つの変数で管理できる
- 重複して値を持たせることが可能
- 後で要素の値を変更することができる。(ミュータブル)
構文
1 |
変数 = [値1,値2,値3] |
値の取り出し
1 2 |
list = ['スイカ', 'メロン', 'いちご'] print(list[0]) # スイカ |
for文で回す
1 2 3 4 5 6 7 |
list = ['メロン', 'スイカ', 'いちご'] for v in list: print(v) メロン スイカ いちご |
index番号付きで取得
enumerateという構文を使います。
1 2 3 4 5 6 7 |
list = ['スイカ', 'メロン', 'いちご'] for i, v in enumerate(list): print(i, v) 0 スイカ 1 メロン 2 いちご |
最後尾に要素を追加
appendを使います。
1 2 3 |
list = [1, 2, 3] list.append(4) print(list) # [1, 2, 3, 4] |
途中に要素を追加
1 2 3 |
l = [1, 2, 3] l.insert(2, 4) print(l) # [1, 2, 4, 3] |
list同士をマージ
1 2 3 4 |
list1 = [1,2,3] list2 = [4,5,6] list1.extend(list2) print(list1) # [1, 2, 3, 4, 5, 6] |
要素を削除
1 2 3 |
l = [1, 2, 4,5] l.remove(4) print(l) # [1, 2, 5] |
なお、もし同じ値が入っていた場合は最初の要素だけが削除されます。
リスト内包表記(リストを作成する)
1 2 |
list = [i for i in range(3)] print(list) # [0, 1, 2] |
for文とappendを使えば同じように書くことができますが、for + appendに比べて処理が高速になるメリットもあります。
ifと組み合わせる
1 2 |
ist = [i for i in range(5) if i % 2 == 0] print(list) # [0, 2, 4] |
タプル(tuple)
特徴
用途は、リスト(list)とほぼ同じだが、要素の値を変更できない(イミュータブル)という点が異なる。なのでlistと違って要素の追加や削除などの機能を持ったメソッドは存在しません。
構文
丸カッコを使います。
1 |
変数 = (値1,値2,値3) |
値の取り出し
1 2 |
tuple = ('スイカ', 'メロン', 'いちご') print(tuple[0]) # スイカ |
分割代入(unpack)
1 2 3 4 5 6 7 8 9 |
tuple = ('スイカ', 'メロン', 'いちご') t1,t2,t3 = tuple print('t1',t1) print('t2',t2) print('t3',t3) t1 スイカ t2 メロン t3 いちご |
tuple同士を結合する。
全く新しいtupleを作成できます。
1 2 3 4 |
t1 = (1, 2) t2 = (3, 4) t3 = t1 + t2 print(t3) # (1, 2, 3, 4) |
ユースケース
- 固定値を作りたい場合
Listとの使い分け
パフォーマンスはlistに比べて良いです。ただ、要素の追加削除などはできないので要素の追加や削除などが発生する場合はlistを使ってそうでない場合は基本はTuppleを使うという形が良いと思います。
集合型(set)
特徴
- 重複して値を持たせることができない。
- 順序を付けることもできない。(例えば、{2,1,4}と定義しても勝手に{1,2,4}になってしまう。)
- 数学的な演算(結合・交差・差分・対象差)を行わせることができる。
構文
波カッコを使います。
1 |
変数 = {値1,値2,値3} |
addメソッド
要素を追加できます。
removeメソッド
要素を削除できます。
setメソッド
listからsetを生成する。その際は、もしlist内に重複した値があったりすれば自動で排除されます。
1 2 |
list = [1,2,3,4,4,5] aaa = set(list) # 1,2,3,4,5 |
演算子「|」(パイプ)
値を足し算します。重複した値は無視されます。
1 2 3 4 5 |
A = {1,2} B = {2,3} C = A | B print(C) # 1,2,3が出力される。 |
差集合(-)
1 2 3 |
A = {1,2} B = {2,3} C = A - B // 1 |
積集合(&)
両方に含まれている要素を抽出できます。
1 2 3 |
A = {1,2} B = {2,3} C = A & B # 2 |
辞書型(dict)
特徴
キーと値の組み合わせで値を持つことができる。
構文
1 |
変数 = {'キー1':値1,'キー2':値2,'キー3':値3} |
値を取り出す。
1 2 3 4 5 6 |
d = {'スイカ': 80, 'メロン': 100} print(d['メロン']) # 100 もしくは d.get('スイカ') # 80 |
d['キー']とd.get('キー')の違い
ないキーを指定した場合の挙動が異なります。getだとNoneが返ってきますが、d['キー']だと実行時エラーになってしまいます。
値を取得して取得した値を消す。(pop)
1 2 3 |
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} print(d.pop('スイカ')) # 80 print(d) # {'メロン': 100, 'いちご': 30} |
値を変更する。
1 2 3 |
d = {'スイカ': 80, 'メロン': 100} d['メロン'] = 150 print(d['メロン']) # 150 |
辞書に新しい要素を追加する。
1 2 3 |
d = {'スイカ': 80, 'メロン': 100} d['いちご'] = 30 print(d) # {'スイカ': 80, 'メロン': 100, 'いちご': 30} |
キー一覧を取得する
1 2 3 4 5 6 7 8 9 10 |
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} d.keys() # dict_keys(['スイカ', 'メロン', 'いちご']) d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} for key in d.keys(): print(key) スイカ メロン いちご |
バリュー一覧を取得する。
1 2 3 4 5 6 7 |
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} for value in d.values(): print(value) 80 100 30 |
キーとバリューをまとめて取得する。
tupleで値が返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} for item in d.items(): print(item) ('スイカ', 80) ('メロン', 100) ('いちご', 30) d = {'スイカ': 80, 'メロン': 100, 'いちご': 30} for key,value in d.items(): print(key,value) スイカ 80 メロン 100 いちご 30 |
複数の辞書をマージ
Python3.5から辞書同士をマージできるようになりました。
1 2 3 4 |
d1 = {'k1': 1, 'k2': 2} d2 = {'k3': 3, 'k4': 4} d3 = {'k5': 5, 'k6': 6} d4 = {**d1, **d2,**d3} |
ちなみに、元の辞書(上記例で言えばd1、d2、d3)は破壊されないです。
同じキーを指定した場合は後から指定した方で上書きされます。
この記事へのコメントはありません。