AI開発で使うPython

 人工知能(AI)の開発に利用されるPythonは、プログラム言語でよく見られる区間を表す「{」「}」や区切りを表す「;」がありません。代わりにインデントが意味を持ちます。高級言語と言われるPythonの文法のうち、AI開発する上で知っておきたいものを書いていきます。

機械学習ライブラリ(入門編)

『機械学習ライブラリ(入門編)』に戻る>>

知らないとAI実装コードが呪文に見えます

データ型

タプル

◆要素を格納します。
 後述の「リスト」に似ていますが、変更ができません。

a = (1, 2)
print(type(a))
print(a)
<class 'tuple'>
(1, 2)

◆要素には、数字と文字列など混合も可能です。

a = (1, 2, 'a')
print(type(a[0]))
print(type(a[1]))
print(type(a[2]))
<class 'int'>
<class 'int'>
<class 'str'>

リスト

◆要素を格納します。

l = [1, 2, 3, 4, 5]
print(type(l))
print(l)
<class 'list'>
[1, 2, 3, 4, 5]

◆要素の取り出し方はいくつかあります。

l = [1, 2, 3, 4, 5]
print(l[0])
print(l[2:])
print(l[:3])
1
[3, 4, 5]
[1, 2, 3]
enumerateを使うと要素番号と合わせて取り出せます。
l = ['a', 'b', 'c']
for i, item in enumerate(l):
    print(str(i) + ':' + item)
0:a
1:b
2:c

◆内包表記はよく登場します。

a = [i for i in range(5)]
print(a)
[0, 1, 2, 3, 4]

ディクショナリ

◆「key:value」の形式で要素を格納します。

dict = {'a':10, 'b':20, 'c':30}
print(type(dict))
print(dict)
<class 'dict'>
{'a': 10, 'b': 20, 'c': 30}

◆「key」を指定して「value」を取り出します。

print(dict['a'])
print(dict['b'])
print(dict['c'])
10
20
30

操作

for文

◆指定回数のループ処理ではrangeが便利です。
 次の例では要素の個数=3回ループ処理します。
for i in range(3):
    print('aa:' + str(i))
aa:0
aa:1
aa:2
range(3)は「0」「1」「2」の要素を持ちます。
a = range(3)
print(a)
print(a[0])
print(a[1])
print(a[2])
range(0, 3)
0
1
2

代入

◆下記の例の3行目では、元の変数に直接代入しています。
 swap変数を介した入れ替えが不要でコードが短くなります。

l = [1, 2, 3, 4, 5]
print(l)
l = l[3:]
print(l)
[1, 2, 3, 4, 5]
[4, 5]

機能

class、def

◆初期値を100として、n倍する機能を持つクラスを作成します。

class cls_test(): #classの宣言
    def __init__(self, a): #コンストラクタ
        self.a = a
    def linear(self, b): #主要部(モジュール)
        out = self.a * b
        return out
c_test = cls_test(100) #コンストラクタで初期化
print(type(c_test))
<class '__main__.cls_test'>

◆クラスの定義を確認します。

??c_test
Type:        cls_test
String form: <__main__.cls_test object at 0x0000022AFDB15AC0>
Docstring:   

◆クラスは初期値100を保持しています。
 モジュールを呼び出して100×2=200を実行します。

rtn = c_test.linear(2)
print(rtn)
200

lambda

◆関数の短縮形です。
 短い処理であればdefを使わず1行で書けます。
square = lambda n:n**2 #宣言部
a = square(3) #呼び出し
print(a)
9

1行目で関数「square」を宣言しています。
2行目の引数「3」は「n」として関数に引き継がれ2乗を計算する流れです。

『機械学習ライブラリ(入門編)』に戻る>>

以上