kurumi-bioの雑記帳

プログラミング、パソコン、ペット、 犬、お出かけ

ChatGPTでプログラミングを学ぼう 第7回 「Pythonのタプル型の操作」

こんにちは、kurumi-bioです。

ChatGPTと会話しながらPythonを学んでいきます。

環境

前回の振り返り

前回は、Pythonのリスト型の操作のついて学習しました。
リスト型は、要素の追加、削除、変更を行う操作が可能なことがわかりました。

kurumi-bio.hatenablog.com

学習内容

今回は、タプル型の操作を学習します。

Pythonのタプル型の操作

Pythonのタプル型の操作をChatGPTに聞いてみました。

タプル型の操作

◆テストコード

# 1.タプルの作成
my_tuple1 = (1, 2, 3, 4, 5)

# 2. 要素のアクセス
print("2=", my_tuple1[0])

# 3.スライス
print("3=", my_tuple1[1:4])

# 4.タプルの結合
my_typle2 = ("a", "b", "c")
my_tuple3 = my_tuple1 + my_typle2
print("4=", my_tuple3)

# 5.タプルの長さの取得
print("5=", len(my_tuple3))

# 6.要素の検索
print("6=", "a" in my_tuple3)

# 7.タプルの反復処理
print("-----7-----")
for item in my_tuple3:
    print(item)
print("-----7-----")

# 8.タプル要素の最大値と最小値の取得
print("8(max)=", max(my_tuple1))
print("8(min)=", min(my_tuple1))

# 9.タプル要素の数え上げ
my_tuple4 = (1, 2, 2, 3, 2, 4, 2)
print("9=", my_tuple4.count(2))

◆実行結果

実行結果の説明 ChatGPTの回答に記載された操作は一通りできました。
リスト型の操作を学習した時には無かった、検索、反復処理、最大値、最小値が追加されました。
また、タプル型は、要素の追加、削除、変更を行うと、どうなるか試してみます。

要素の変更

リスト型はインデックスを指定して要素を変更できましたが、タプル型でどうなるか試してみました。

◆テストコード

my_tuple = ("い", "ろ", "は")
print("my_tuple=", my_tuple)

my_tuple[1]="ロ"
print("変更後=", my_tuple)

◆実行結果

実行結果の説明 TypeError: 'tuple' object does not support item assignment
(「タプル」オブジェクトは項目の割り当てをサポートしていません)
のエラーが発生して変更できませんでした。

要素の追加と変更

リスト型は要素の追加、変更を行う操作がありましたが、タプル型でどうなるか試してみました。

◆テストコード

my_tuple = ("い", "は")
print(my_tuple)

my_tuple.append("に")
print("append後:", my_tuple)

my_tuple.insert(1,"ろ")
print("insert後:", my_tuple)

extend_tuple=("に", "ほ", "へ", "と")
my_tuple.extend(extend_tuple)
print("extend後:", my_tuple)

my_tuple.remove("に")
print("remove後:", my_tuple)

p = my_tuple.pop(6)
print("pop後:", my_tuple, "p=", p)

my_tuple.clear()
print("clear後:", my_tuple)

my_tuple.reverse()
print("reverse後=", my_tuple)

my_tuple.sort()
print("sort後=", my_tuple)

my_tuple2=my_tuple.copy()
print("my_tuple2=", my_tuple2)

◆実行結果

実行結果の説明 AttributeError: 'tuple' object has no attribute 'append'
(「タプル」オブジェクトには属性「追加」がありません)のエラーが発生して変更できませんでした。
実行結果は、appendだけですが、他の操作(insert, extend, remove, pop, clear, reverse, sort, copy)もエラーになって変更できませんでした。

要素を変更しない操作

◆テストコード

my_tuple = ("赤","青","黄","赤")
print("my_tuple=", my_tuple)

print("index(青)=", my_tuple.index("青"))

my_tuple2 = (1, 5, 2, 4, 3, 3)
print("my_tuple2=", my_tuple2)

sort_tuple=sorted(my_tuple2)
print("sorted後")
print("my_tuple2=", my_tuple2)
print("sort_tuple=", sort_tuple)

◆実行結果

実行結果の説明 indexとsortedの両方の操作が可能でした。
ただ、sortedの結果はタプル型ではなくリスト型になっていました。

タプルの比較

◆テストコード

my_tuple1 = ("い", "ろ", "は")
my_tuple2 = ("に", "ほ", "へ")
my_tuple3 = ("は", "ろ", "い")
my_tuple4 = ("い", "ろ", "は")

if my_tuple1 == my_tuple2:
    print("my_tuple1とmy_tuple2は同じ")

if my_tuple1 == my_tuple3:
    print("my_tuple1とmy_tuple3は同じ")

if my_tuple1 == my_tuple4:
    print("my_tuple1とmy_tuple4は同じ")

if my_tuple1 != my_tuple2:
    print("my_tuple1とmy_tuple2は違う")

if my_tuple1 != my_tuple3:
    print("my_tuple1とmy_tuple3は違う")

if my_tuple1 != my_tuple4:
    print("my_tuple1とmy_tuple4は違う")

◆実行結果

実行結果の説明 リスト型と同じく要素ごとの比較が可能でした。

リスト型の操作

前回のリスト型の操作で学習しなかった操作がタプル型にありましたので、リスト型でも試してみました。

◆テストコード

# リストの作成
my_list1 = [1, 2, 3, 4, 5]

# リストの結合
my_typle2 = ["a", "b", "c"]
my_list3 = my_list1 + my_typle2
print("4=", my_list3)

# 要素の検索
print("6=", "a" in my_list3)

# リストの反復処理
print("-----7-----")
for item in my_list3:
    print(item)
print("-----7-----")

# リスト要素の最大値と最小値の取得
print("8(max)=", max(my_list1))
print("8(min)=", min(my_list1))

◆実行結果

実行結果の説明 リスト型でも操作可能でした。

操作比較

リスト型とタプル型で、どの操作が可能かを表にしました。

リスト型 タプル型
インデックス変更 ×
インデックス取得
appendメソッド ×
insertメソッド ×
extendメソッド ×
removeメソッド ×
popメソッド ×
clearメソッド ×
reverseメソッド ×
sortメソッド ×
copyメソッド ×
indexメソッド
countメソッド
len関数
sorted関数
max関数
min関数
結合(+)
検索(in)
スライス
比較
反復処理(for in)

リスト型は要素の追加、削除、変更が可能
タプル型は要素の追加、削除、変更が不可能 ということがわかりました。

残課題

  • セット型、辞書型の操作
  • モジュール型とユーザー定義型
  • open関数の構文と使い方
  • 構文中の":"と";"の意味

最後までご覧いただきありがとうございます