Python自体が分からないので、入門①で構築した環境で基本を学習します。
Pythonの基本
参考書に沿って進めます。基本的過ぎて他の方がわざわざ参照することはないかも??
そこまでスピードが求められるわけでなければ、基本さえ分かっておけば後はその都度調べればなんとかなじゃない?って感じのノリです。
操作はすべて「Jupyter Notebook」で試しています。
基本計算
四則演算は他の言語等と大差なく使用できるようです。
・例
num = 1 #加算 num = num + 2 print(num) #乗算 num = num * 2 print(num) #除算 num = num / 3 print(num) #減算 num = num -1 print(num)
・出力結果
3 6 2.0 1.0
累乗表現
累乗は「**」で表現するようです。
・例
#累乗 print(2**4) print(2**5)
・出力結果
16 32
変数と型表現
・変数
既に使用していますが、変数は特別な宣言なしで使用できるようですね。
いいのか悪いのか。
・型
変数自体に型を明示せずデータ自体が型をもつ。
pythonの基本型の例は以下の通り。
int型 | 整数 |
---|---|
float型 | 実数 |
str型 | 文字列 |
bool型 | 真偽 |
list型 | 配列 |
tuple型 | 配列 |
ndarray型 | 行列 |
私にとってなじみがないのは「tuple型」と「ndarray型」ぐらいかな。
型の調査には「type」を用いる。
・例
print(type(1)) print(type(0.1)) print(type(True)) print(type('test'))
・出力結果
<class 'int'> <class 'float'> <class 'bool'> <class 'str'>
真偽値は大文字小文字を意識して「True」と「False」で記述すること。
文字列の組み合わせ表現
文字列の結合には「+」を用いればよい。型の変換は「str()」など普通にキャストすれば問題ない。
・例
num = 1 / 4 print('num= ' + str(num)) num = num + int('2') print (num)
・出力結果
num= 0.25 2.25
また、formatを使用することによっても文字の結合ができる。
複数の文字列変数を結合する場合は便利そうだが実践的にはどのくらい使用されているのだろうか。
・例
num1 = 10 num2 = 15 num3 = 30 print('num1={0},num2={1},num3={2}'.format(num1,num2,num3))
・出力結果
num1=10,num2=15,num3=30
Pythonの配列
配列(list)
配列の宣言は以下の形式で行う。
numlist = [1,2,4,8,16,32]
基本っぽい操作は以下の通り。他にも操作方法はいろいろあるけどこれぐらい知っておけば後は都度調べればなんとかなるのかな?
・例
#numlist定義 numlist = [1,2,4,8,16,32] #そのまま表示すると宣言通りの形で表示 print('そのままlist=>' + str(numlist)) #指定要素のみを抜き出す print('listの一番目=>' + str(numlist[0])) #listの長さを出力する print('listの長さ=>' + str(len(numlist))) #要素を追加する numlist.append(100) print('listの七番目=>' + str(numlist[6])) #要素を置き換える numlist[6] = 64 print('listの七番目=>' + str(numlist[6]))
・出力結果
そのままlist=>[1, 2, 4, 8, 16, 32] listの一番目=>1 listの長さ=>6 listの七番目=>100 listの七番目=>64
二次元配列
Pythonでは二次元の配列を扱うことができる。
機械学習ではいかにも使いそうな感じがするけどどうなんでしょうか。
宣言は以下の形式となる。
list2d = [[1,2,3],[2,4,8]]
すべての操作を試したわけではないが概ね通常のlistと同様の操作ができるのだろう。
・例
#二次元リストの定義 list2d = [[1,2,3],[2,4,8]] print('そのまま表示=>' + str(list2d)) print('一つ目のリストを表示=>' + str(list2d[0])) print('一つの要素を表示=>' + str(list2d[1][2]))
・出力結果
そのまま表示=>[[1, 2, 3], [2, 4, 8]] 一つ目のリストを表示=>[1, 2, 3] 一つの要素を表示=>8
タプル(tuple)
Pythonの配列型の一つ。値の書き換えはできない。
定義は以下のように行う。
・例
#タプルの定義 tuple_list = (1,2,4,8,16) print(tuple_list) print(tuple_list[1]) print(len(tuple_list))
・出力結果
(1, 2, 4, 8, 16) 2 5
概ね通常のlist型と同様の扱い方ができる。
関数の入出力で使用せざる負えない場合があるとかないとか。
Pythonの基本構文
Python構文のインデント
初めてみたときいまいちどうゆう仕組みなのか分からなかったがPythonでは処理のまとまりを「()」などの表記ではなくインデントで区分する。
例えば他言語のif文の「()」の位置などをわざわざルール化する必要もなく書き方が統一されるなどの効果があるのだろう。
具体的な記述方法については次のif文やfor文で示す。
if文
分岐表現に用いる「if文」、基本的な仕組みは他の言語と変わらないようだ。
elseは「else:」で表す。
・例
num = 11 if num > 10: result = '数値は10以上です。' print(result) else: result = '数値は10未満です。' print(result) print('インデントを変えると構文から外れる')
・出力結果
数値は10以上です。 インデントを変えると構文から外れる
その他if文関連の使い方。
条件の重ね合わせ and
if num > 10 and num < 20:
条件の重ね合わせ or
if num >= 20 or num < 0:
else ifの表現
elif
・例
num = -11 if num > 10 and num < 20: result = '数値は10以上20未満です。' print(result) elif num >= 20 or num < 0: result = '数値は20以上かマイナス値です。' print(result) else: result = '数値は0以上11未満です。' print(result)
・出力結果
数値は20以上かマイナス値です。
for文
for 文は原則listを使用して回す感じでしょうか。
・例
for num in [1,2,3]: print(num)
・出力結果
1 2 3
単純に特定回数だけループを行う場合は「range」を使用するのが定跡らしい。
・例
num = 1 objlist = [] #ループ数を指定 numlist = range(5) #ループ回数をiに指定する for i in numlist: #ループごとに3倍する num = num * 3 objlist.append(num) print(num) print(objlist)
3 9 27 81 243 [3, 9, 27, 81, 243]
ループ内でリストの値を編集することもできる。
・例
numlist = [2,4,8,16,32] for i in range(len(numlist)): numlist[i] = numlist[i] + 1 print(numlist[i]) print(numlist)
・出力結果
3 5 9 17 33 [3, 5, 9, 17, 33]
Pythonには「enumerate」というものがあり、rangeを使用することなくリストの数分だけループができ、かつリストの中身も使用することもできる。
・例
numlist = [2,4,8,16,32] for i,num in enumerate(numlist): numlist[i] = num + 1 print(numlist[i]) print(numlist)
・出力結果
3 5 9 17 33 [3, 5, 9, 17, 33]
とりあえず、今回はここまで。
次回もまだ基本が続きます。