こんにちは、kurumi-bioです。
ChatGPTと会話しながらPythonを学んでいきます。
- 環境
- 前回の振り返り
- Pythonのセット型の操作
- 要素の追加
- 要素の削除
- セットの結合と更新
- セットの積集合と更新
- セットの差集合と更新
- セットの対象差と更新
- セットの部分集合と上位集合の判定
- セットの要素数とクリア
- その他
- 操作比較
- 残課題
環境
前回の振り返り
前回は、Pythonのタプル型の操作のついて学習しました。
タプル型は要素の追加、削除、変更が不可能 ということがわかりました。
学習内容
今回は、セット型の操作を学習します。
簡単な操作が多いので、対話モードで学習していきます。
Pythonのセット型の操作
Pythonのセット型の操作をChatGPTに聞いてみました。
要素の追加
◆対話モード
kurumi@localhost:~/python> python3 Python 3.6.15 (default, Sep 23 2021, 15:41:43) [GCC] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> my_set={1,2,3,4} >>> type(my_set) <class 'set'> >>> print(my_set) {1, 2, 3, 4} >>> my_set.add(5) >>> print(my_set) {1, 2, 3, 4, 5} >>>
重複した値は追加できません
◆対話モード
>>> my_set={10,5,3,1} >>> print(my_set) {1, 10, 3, 5} >>> my_set.add(10) >>> print(my_set) {1, 10, 3, 5} >>>
要素の削除
◆対話モード
>>> print(my_set) {1, 2, 3, 4, 5} >>> my_set.remove(3) >>> print(my_set) {1, 2, 4, 5} >>> my_set.remove(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 3 >>> print(my_set) {1, 2, 4, 5} >>> my_set.discard(3) >>> p=my_set.pop() >>> type(p) <class 'int'> >>> print(p) 1 >>> print(my_set) {2, 4, 5} >>>
セットの結合と更新
◆対話モード
>>> print(my_set) {2, 4, 5} >>> my_set2={4,5,6} >>> s=my_set.union(my_set2) >>> print(s) {2, 4, 5, 6} >>> >>> print(my_set) {2, 4, 5} >>> print(my_set2) {4, 5, 6} >>> my_set.update(my_set2) >>> print(my_set) {2, 4, 5, 6} >>> print(my_set2) {4, 5, 6} >>>
広告の下に続きます。
セットの積集合と更新
◆対話モード
>>> my_set1={1,2,3,4} >>> my_set2={5,6,7,8} >>> my_set3={3,4,5} >>> my_set1.intersection(my_set2) set() >>> my_set1.intersection(my_set3) {3, 4} >>> my_set2.intersection(my_set3) {5} >>> print(my_set1) {1, 2, 3, 4} >>> my_set1.intersection_update(my_set2) >>> print(my_set1) set() >>> print(my_set2) {8, 5, 6, 7} >>> my_set2.intersection_update(my_set3) >>> print(my_set2) {5} >>>
セットの差集合と更新
◆対話モード
>>> my_set1={1,2,3,4} >>> my_set2={2,4} >>> my_set1.difference(my_set2) {1, 3} >>> my_set2.difference(my_set1) set() >>>
セットの対象差と更新
◆対話モード
>>> my_set1={1,2,3,4} >>> my_set2={2,4,6} >>> my_set1.symmetric_difference(my_set2) {1, 3, 6} >>> my_set2.symmetric_difference(my_set1) {1, 3, 6} >>>
セットの部分集合と上位集合の判定
部分集合
◆対話モード
>>> my_set1={1,2,3,4} >>> my_set2={4,5,6,7} >>> my_set3={1,4} >>> my_set1.issubset(my_set2) False >>> my_set1.issubset(my_set3) False >>> my_set3.issubset(my_set1) True >>> my_set3.issubset(my_set2) False
上位集合
◆対話モード
>>> my_set1={1,2,3,4} >>> my_set2={4,5,6,7} >>> my_set3={1,4} >>> my_set1.issuperset(my_set2) False >>> my_set1.issuperset(my_set3) True >>> my_set3.issuperset(my_set1) False >>> my_set3.issuperset(my_set2) False >>>
セットの要素数とクリア
◆対話モード
>>> my_set={} >>> my_set2={1,2} >>> len(my_set) 0 >>> len(my_set2) 2 >>> my_set2.clear() >>> len(my_set2) 0 >>> print(my_set2) set() >>>
その他
ChatGPTの回答に無いけど、リスト型とタプル型で使用できた操作が使えるか確認してみました。
コピー関数
◆対話モード
>>> my_set1={1,2,3} >>> my_set2=my_set1.copy() >>> print(my_set2) {1, 2, 3} >>> my_set3=my_set1 >>> print(my_set3) {1, 2, 3}
sorted関数
◆対話モード
>>> my_set1={1,2,4,8,16,32,64,128} >>> print(my_set1) {32, 1, 2, 64, 4, 128, 8, 16} >>> sorted(my_set1) [1, 2, 4, 8, 16, 32, 64, 128] >>> print(my_set1) {32, 1, 2, 64, 4, 128, 8, 16} >>>
max関数,min関数
◆対話モード
>>> my_set1={1,2,4,8,16,32,64,128} >>> max(my_set1) 128 >>> min(my_set1) 1
検索(in)
◆対話モード
>>> my_set1={1,2,4,8,16,32,64,128} >>> 4 in my_set1 True >>> 5 in my_set1 False >>>
比較
◆対話モード
>>> my_set1={1,2,3} >>> my_set2={4,5,6} >>> my_set3={2,3} >>> my_set4={1,2,3} >>> print(my_set1 == my_set2) False >>> print(my_set1 == my_set3) False >>> print(my_set1 == my_set4) True >>>
反復処理
◆対話モード
>>> my_set1={1,2,4,8,16,32,64,128} >>> for item in my_set1:print(item) ... 32 1 2 64 4 128 8 16 >>>
操作比較
リスト型とタプル型で、どの操作が可能かを表にしました。
リスト型 | タプル型 | セット型 | |
---|---|---|---|
インデックス変更 | 〇 | × | × |
インデックス取得 | 〇 | 〇 | × |
appendメソッド | 〇 | × | addメソッド |
insertメソッド | 〇 | × | × |
extendメソッド | 〇 | × | × |
removeメソッド | 〇 | × | 〇 |
popメソッド | 〇 | × | 〇 |
clearメソッド | 〇 | × | 〇 |
reverseメソッド | 〇 | × | × |
sortメソッド | 〇 | × | × |
copyメソッド | 〇 | × | 〇 |
indexメソッド | 〇 | 〇 | × |
countメソッド | 〇 | 〇 | × |
len関数 | 〇 | 〇 | 〇 |
sorted関数 | 〇 | 〇 | 〇 |
max関数 | 〇 | 〇 | 〇 |
min関数 | 〇 | 〇 | 〇 |
結合(+) | 〇 | 〇 | × |
検索(in) | 〇 | 〇 | 〇 |
スライス | 〇 | 〇 | × |
比較 | 〇 | 〇 | 〇 |
反復処理(for in) | 〇 | 〇 | 〇 |
リスト型は要素の追加、削除、変更が可能
タプル型は要素の追加、削除、変更が不可能
セット型は要素の追加、削除が可能、インデックス指定が不可能
ということがわかりました。
残課題
- 辞書型の操作
- モジュール型とユーザー定義型
- open関数の構文と使い方
- 構文中の":"と";"の意味
最後までご覧いただきありがとうございます