【Python】リストの操作

Pythonのリスト操作の個人的なメモです。

リストの操作

a = [1,2,3]
 aはリスト

a.append(4)
 リストaの最後に4を追加する
a.extend([6,7])
 リストaの最後にリスト[6,7]を追加する
a.insert(0, 10)
 インデックス0にオブジェクト10を追加する
a.remove(10)
 リストaから10が消える
 もし10が複数ある場合は、一番最初の10だけが消える
a.pop(0)
 一番最初(要素番号0)のデータを取り出して削除する
 a.pop()はa.pop(-1)と同じ
a.clear()
 引数なし
a.copy()
 引数なし
 b = a.copy()
a.index(1)
 引数「1」の要素番号を返す
 もし1が複数ある場合は、一番最初の1の要素番号(インデックス)を返す
a.count(1)
 リストa内の、「1」の数を返す
a.sort()
 リストaのデータを順に並び変える。
  a.sort()は、a.sort(reverse=False)と同じ
 逆順に並び変える場合は、a.sort(reverse=True)

メソッド 引数            リストの変化
------------------------------------------------------------------------
append 数値(または文字)      変わる
extend  リスト            変わる
insert  要素番号、数値(または文字) 変わる
remove 数値(または文字)      変わる
pop    要素番号           変わる
clear  なし              変わる
copy  なし              変わらない
index  数値(または文字)      変わらない
count  数値(または文字)      変わらない
sort   順(昇順)か逆順(降順)   変わる

※引数は、オブジェクトの場合、要素番号の場合等あり。
 操作によって、リストが変わる場合と変わらない場合あり。

参考
リストの取り扱い - Python3エンジニア認定基礎試験 #23 - YouTube

 

【Python】for ~ else

Pythonのfor ~ else文
イテラブルを使い切ってループが終了する場合、else節が実行されます。
(breakが実行された場合は、イテラブルを使い切ってループが終了する場合にならないため、else節は実行されません)

コード1
for ~ elseのコードと実行結果

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

出典:4. その他の制御フローツール — Python 3.10.4 ドキュメント

 

上記コードでは、「for x in range(2, n):」と「else:」がセットになっています。
nが2の時は、「list(range(2,2))」が「[]」となり、(イテラブルを使い切ってループが終了し、)breakが実行されないため、else節が実行されます。
nが3の時は、「3 % 2」が「1」となり(「0」ではなく)、breakが実行されないため、(イテラブルを使い切ってループが終了することになり、)else節が実行されます。
nが4の時は、「4 % 2」が「0」となり、breakが実行されるため、else節は実行されません。
nが5の時は、「5 % 2」、「5 % 3」、「5 % 4」が全て「0」にならず、breakが実行されないため、else節が実行されます。

 

コード2
上記、コード1と同じ動作をするコード(breakあり。for ~ elseなし(if ~ elseあり))。
for n in range(2, 10):
    if n == 2:
        print(n, 'is a prime number')
        continue
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
        else:
            #break未実施の場合(=イテラブルを使い切ってループが終了する場合)
            if x == n-1:
                print(n, 'is a prime number')

実行結果(コード1と同じ)
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

コード3
上記、コード1と同じ動作をするコード(breakなし。for ~ elseあり)。
for n in range(2, 10):
    flg = 0
    for x in range(2, n):
        if n % x == 0 and flg == 0:
            print(n, 'equals', x, '*', n//x)
            flg = 1
    else:
        # イテラブルを使い切ってループが終了する場合
        if flg == 0:
            print(n, 'is a prime number')

実行結果(コード1と同じ)
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

イテラブルを使い切ってループが終了する場合にelse節が実行されるため、breakがなくてもfor ~ else文は動作可能でした。

 

「PythonZen & PEP 8 検定試験」を受けてみた

感想
「PythonZen & PEP 8 検定試験」を受けてみました。
すぐに何度でも繰り返しオンラインで受験できるため、何回か受験すれば合格可能です。

説明
PythonZenは、Pythonの心得です。
PEP 8は、コーディング規約です。
参考:TOP - PythonZen & PEP 8 検定試験

リンク
TOP - PythonZen & PEP 8 検定試験

 

【Python】ファイルへの書き込み

open、close
with、open。(closeは不要)

プログラム(その1)
f = open('test.txt', 'w')
for i in range(0,100):
    f.write(str(i) + '\n')
f.close()

実行結果
(test.txtの中身)
0
1
(省略)
98
99

プログラム(その2)
with open('test_b.txt', 'w') as f:
    for i in range(0,100):
        f.write(str(i) + '\n')

実行結果
その1と同じ

参考資料
「Python ゼロからはじめるプログラミング」サポートページ (tsukuba.ac.jp)
ゼロから始めるPython(7) - Qiita
例外処理 クリーンアップ動作の定義- Python3エンジニア認定基礎試験 #36 - YouTube

 

【資格】【AI】「G検定」合格記録

2021年11月に「G検定」(JDLA Deep Learning for GENERAL 2021#3)に合格しましたので記録を残してみたいと思います。

 

公式サイト
G検定とは - 一般社団法人日本ディープラーニング協会【公式】

 

試験について
試験時間はぎりぎりに近かったです。
見直しの時間をなんとか少しとることができました。
しかし、不明な回答全てを見直すまでの時間は余りませんでした。

あくまで個人の感想ですが、法律関係が多く出題されたように感じました。

試験中、カンペは非常に役に立ちました。
曖昧な点を確認したり、自分の回答を検証することができました。

試験中、参考書でも確認しました。

試験中、ネットでも少し検索しました。
ほとんどはカンペの検索で済みましたが、カバーしきれなかった点があり、最後の手段としてネットで検索しました。

勉強期間は3ヶ月くらい。試験と直接関係がないAIの勉強も含めると半年くらいかけて少しずつ勉強していました。

 

勉強方法
当初は基礎知識として試験に直接関係ないことから勉強しました。
図書館でAI関連の本で易しそうな本を一通り借りて読みました。

G検定受験を決意してからは、試験用の勉強をしました。
ネットで「G検定」、「G検定 合格」、「G検定 勉強」等のキーワードで検索して情報を収集しました。

G検定の参考書を買って勉強しました。
ネット上の模擬試験でも勉強しました。

カンペを作成しました。
自分で勉強しながらまとめた自分のカンペと、他の人のカンペをまとめたカンペ集と2つ作成しました。
自分自身の勉強になりましたし、試験中両方のカンペを検索することもしました。

 

勉強で使用した主な教材、試験対策情報

・AIの基礎知識

「はじめてのAI」Grow with Google | gacco

AI For Everyone (すべての人のためのAIリテラシー講座) | Coursera

『人工知能は人間を超えるか ディープラーニングの先にあるもの』 松尾 豊|KADOKAWA

『超AI入門 ディープラーニングはどこまで進化するのか』 | NHK出版


・試験対策

参考書
『徹底攻略ディープラーニングG検定ジェネラリスト問題集 第2版』 - インプレスブックス

『深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版』(一般社団法人日本ディープラーニング協会)|翔泳社

『最短突破 ディープラーニングG検定(ジェネラリスト)問題集』|技術評論社

DIVE INTO EXAMの「G検定」無料模擬試験
DIVER | DIVE INTO CODE(DIC)

【予想問題】G検定問題演習
ITエンジニア ノイ - YouTube

G検定試験対策情報
G検定|カオカオ

 

【資格】【AI】「AI実装検定B級」合格記録

2021年10月に、AI実装検定B級に合格しましたので記録を残してみたいと思います。

 

AI実装検定B級とは、AIの入門的な試験です。

 

公式サイト
出題範囲(B級) | AI実装検定

 

公式教材
中学生から分かるAI入門講座 [AI実装検定®B級]公式テキスト - YouTube

 

試験について
試験は、ほぼ公式教材から出ました。
見直しができるくらいの時間的余裕を残して回答できました。

手元に紙とペンを用意しておいて、計算に使用しました。

試験自体は、1ヶ月もあれば充分学習できる内容だと感じました。

 

勉強方法
公式教材を複数回見ました。
そして、内容や画像を自分なりにまとめました。

ちょうどG検定の試験も近かったため、G検定の勉強も並行して行いました。

 

勉強に使用した主な教材
上記、公式教材。
徹底攻略ディープラーニングG検定ジェネラリスト問題集 第2版 - インプレスブックス