SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【Python】入門② Pythonの基本構文 その1

Python自体が分からないので、入門①で構築した環境で基本を学習します。

www.wantanblog.com

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]


とりあえず、今回はここまで。
次回もまだ基本が続きます。