kurumi-bioの雑記帳

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

ChatGPTでプログラミングを学ぼう 第6回 「Pythonのリスト型の操作」

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

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

環境

前回の振り返り

前回は、Pythonの変数の基本型について学習しました。
基本型のリスト型、タプル型、セット型、辞書型は、操作ができることがわかりました。

kurumi-bio.hatenablog.com

学習内容

今回は、リスト型の操作を学習します。

Pythonのリスト型の操作

Pythonのリスト型の操作をChatGPTに聞いてみました。

以降でリスト型操作を分類ごとに学習します。

要素の追加と削除

リスト型に要素を追加、削除、リストを追加、すべて削除の操作を学習します。

◆テストコード

my_list = ["い", "は"]
print(my_list)

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

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

extend_list=["に", "ほ", "へ", "と"]
my_list.extend(extend_list)
print("extend後:", my_list)

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

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

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

◆実行結果

実行結果の説明 ”いは"のリストに"に"を追加(append)して、"いはに"にしました。
"ろ"が抜けてるので、リストに"ろ"を挿入(insert)して、"いろは"にしました。
リスト"にほへと"を追加(extend)して、"いろはににほへと"にしました。
"に"が重複しているので、削除(remove)して、"いろはにほへと"にしました。
最後の文字"と"を取得削除(pop)して、"いろはにほへ"にして、
全削除(clear)を行いました。

◆テストコード

my_list = ["い", "ろ", "は"]
print("my_list=", my_list)

my_list.insert(10, "ぬ")
print("変更後=", my_list)

◆実行結果

実行結果の説明 挿入(insert)に存在しないインデックスを指定しましたが、エラーにならないで最後に追加されました。

◆テストコード

my_list = ["い", "ろ", "は"]

print("my_list=", my_list)

my_list.remove("に")
print("remove後=", my_list)

◆実行結果

実行結果の説明 存在しない値を指定して削除(remove)を行ったらValueError: list.remove(x): x not in listのエラーになりました。

◆テストコード

my_list = ["い", "ろ", "は"]
print("my_list=", my_list)

p = my_list.pop(10)
print("pop後=", my_list)

◆実行結果

実行結果の説明 存在しないインデックスを指定して削除取得(pop)を行ったらIndexError: pop index out of rangeのエラーが発生しました。

要素の変更と取得

インデックスを使用して、要素の変更、取得を行う方法を学習します。

◆テストコード

my_list = ["い", "ろ", "は"]
print("my_list=", my_list)

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

v=my_list[2]
print("v=", v)

◆実行結果

実行結果の説明 インデックス指定で、"いろは"の"ろ"を"ロ"に変更しました。
インデックス2の文字を取得して表示しました。

◆テストコード

my_list = ["い", "ろ", "は"]
print("my_list=", my_list)

my_list[5]="ロ"
print("変更後=", my_list)

◆実行結果

実行結果の説明 存在しないインデックスを変更しようとしたらIndexError: list assignment index out of rangeのエラーが発生しました。

◆テストコード

my_list = ["い", "ろ", "は"]
print("my_list=", my_list)

v=my_list[5]
print("v=", v)

◆実行結果

実行結果の説明 存在しないインデックスを取得したらIndexError: list index out out rangeのエラーが発生しました。

リストの操作

素数の取得、出現回数、ソートの操作を学習します。

◆テストコード

my_list = ["赤","青","黄","赤"]

print("my_list=", my_list)
print("len=",len(my_list))
print("count(赤)=", my_list.count("赤"))
print("index(青)=", my_list.index("青"))

my_list2 = [1, 5, 2, 4, 3, 3]
print("my_list2=", my_list2)

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

sort_list=sorted(my_list2)
print("sorted後")
print("my_list2=", my_list2)
print("sort_list=", sort_list)

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

my_list3=my_list2.copy()
print("my_list3=", my_list3)

◆実行結果

実行結果の説明 my_listの要素数(len)、値が"赤"の数(count)、値が"青"のインデックス(index)を出力しました。
my_list2の要素を逆順(reverse)して出力しました。
my_list2をコピーを昇順で並び替え(sorted)たリストを出力しました。my_listは元のままです。
my_list2の要素の並べ替え(sort)て出力しました。
my_list2のコピーを作成し出力しました。

◆テストコード

my_list = ["赤","青","黄","赤"]

i = my_list.index("緑")
print("index=", i)

◆実行結果

実行結果の説明 存在しない値を指定して、出現位置を取得したらValueError: '<指定した値>' is not in listのエラーが発生しました。

広告の下に続きます。

昇順、降順

sort()操作の結果が昇順でしたので、ChatGPTに降順にする方法を聞いてみました。

◆テストコード

my_list = [1, 5, 2, 4, 3, 3]
print("my_list=", my_list)

my_list.sort(reverse=True)
print("sort(reverse)後=", my_list)

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

◆実行結果

実行結果の説明 リストを降順にした結果と昇順にした結果を出力しました。

スライス

ChatGPTにスライス操作を聞いてみました。

◆テストコード

my_list = ["い", "ろ", "は", "に", "ほ", "へ", "と"]

print(my_list)

s1 = my_list[2:4]
print("2:4=", s1)

s1 = my_list[:4]
print(":4=", s1)

s1 = my_list[4:]
print("4:=", s1)

s1 = my_list[::2]
print("::2=", s1)

s1 = my_list[10:]
print("10::=", s1)

s1 = my_list[:10]
print(":10=", s1)

s1 = my_list[::10]
print("::10=", s1)

◆実行結果

実行結果の説明 スライス操作でリストの部分取得ができました。
startを指定しないと最初の要素から取得
startに存在しないインデックスを指定してもエラーにならないで空のリストを取得
stopを指定しないと最後の要素まで取得
stopに存在しないインデックスを指定してもエラーにならないで最後までのリストを取得
stepに存在しないインデックスを指定してもエラーにならずstartで指定した要素のみが取得
となりました。

リストの比較

◆テストコード

my_list1 = ["い", "ろ", "は"]
my_list2 = ["に", "ほ", "へ"]
my_list3 = ["は", "ろ", "い"]
my_list4 = ["い", "ろ", "は"]

if my_list1 == my_list2:
    print("my_list1とmy_list2は同じ")

if my_list1 == my_list3:
    print("my_list1とmy_list3は同じ")

if my_list1 == my_list4:
    print("my_list1とmy_list4は同じ")

if my_list1 != my_list2:
    print("my_list1とmy_list2は違う")

if my_list1 != my_list3:
    print("my_list1とmy_list3は違う")

if my_list1 != my_list4:
    print("my_list1とmy_list4は違う")

◆実行結果

実行結果の説明 リスト内の要素がすべて同じ場合のみ'=='となりました。

残課題

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

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