TOP > カテゴリ > Python・人工知能・機械学習 >

変数/演算子/制御構造/list/dict/set/tuple/関数/例外 [Pythonの基本]

Python/TensorFlowの使い方(目次)

前回の続きで「Jupyter Notebook」を使用します。

目次

1. 変数
2. コメント
3. 型変換
4. 演算子
5. list(配列)
6. 制御構造/条件分岐
7. dict(辞書)
8. set(集合)
9. tuple(タプル)
10. モジュール
11. 関数
12. 例外
13. 浮動小数点の誤差
14. type/isinstance

1. 変数

val1 = 12345
val2 = 123.45
str1 = 'おはよー'
str2 = "こんにちは"

# シングルクォーテーション3つで括る
str3 = '''改行を含む
長い文字列2'''

# ダブルクォーテーション3つで括る
str4 = """改行を含む
長い文字列1"""

# 次の変数を出力する。結果:こんばんは
str2

2. コメント

# 1行コメント
'''シングルクォーテーションの3重引用符では改行を含むコメントが可能です。'''
"""ダブルクォーテーションの3重引用符でも改行を含むコメントが可能です。"""

3. 型変換

Pythonでは明示的な型変換が必要です。

str(123)      # 数値を文字列へ変換
int("123")    # 文字列を数値へ変換
float("0.05") # 文字列を小数点へ変換

4. 演算子

演算子

演算子演算書式意味
+加算a+baにbを足す
-減算a-baからbを引く
*乗算a*baとbを掛ける
/除算a/baをbで割る
//整数の除算a//baをbで割って、小数点を切り下げる。
%剰除算a%baをbで割った余りを求める
**累乗a**baをb回、乗算する
=代入a=bbをaに代入
+=加算と代入a+=baにbを足した値をaに代入する(a=a+bと同じ)
-=減算と代入a-=baからbを引いた値をaに代入する(a=a-bと同じ)
*=乗算と代入a*=baにbを掛けた値をaに代入する(a=a*bと同じ)
/=除算と代入a/=baをbで割った値をaに代入する(a=a/bと同じ)
%=剰余と代入a%=baをbで割った余りの値をaに代入する(a=a%bと同じ)
//=整数の除算と代入a//=baをbで割って、小数点を切り下げた値をaに代入する(a=a//bと同じ)
**=累乗と代入a**=baをb回、乗算した値をaに代入する(a=a**bと同じ)

関係演算子

演算子使用例意味
>a>baはbより大きい
<a<baはbより小さい
>=a>=baはb以上
<=a<=baはb以下
==a==baとbは等しい
!= a!=baとbは等しくない
ina in baはbに存在する
isa is baとbは同一オブジェクトである

論理演算子

演算子使用例意味
notnot aaが偽ならば真。aが真ならば偽
anda>0 and a<=9aが1以上かつ9以下ならば真、それ以外は偽
ora>100 or b==200aが101以上またはbが200ならば真、それ以外は偽

ビット演算子

演算子使用例意味
&a & 0xf論理積(AND)
|a | 0xf論理和(OR)
^a ^ 0xf排他的論理和(XOR)
~~0ビットの反転
>>a >> 2右シフト
<<a << 2左シフト

文字列の乗算

text = "こんにちは "
text * 3

出力結果:こんにちは こんにちは こんにちは

リストの乗算

lst = [1,2,3]
lst * 3

出力結果:[1, 2, 3, 1, 2, 3, 1, 2, 3]

5. list(配列)

最初の要素を取得する

# 出力 10
lst = [10,11,12,13,14,15]
lst[0]

最後の要素を取得する

# 出力 15
lst = [10,11,12,13,14,15]
lst[-1]

sum

# 出力 15
lst = [1,2,3,4,5]
sum(lst)

max

# 出力 7
lst = [2,1,7,4,5]
max(lst)

min

# 出力 1
lst = [2,1,7,4,5]
min(lst)

要素数

# 出力 5
lst = [1,2,3,4,5]
len(lst)

要素の連結

# 出力 [1, 2, 3, 4, 5]
lst = [1,2,3]
lst = lst + [4,5]
lst

要素の削除

# 出力 ['red', 'green']
lst = ["red","blue","green"]
del lst[1]
lst

要素のスライス1

# 出力 ['blue', 'green']
lst = ["red","blue","green","white","black"]
lst = lst[1:3]
lst

※スライスの書式は[X:Y]。Xは0から、Yは1から数えます。

要素のスライス2

# 出力 ['blue', 'green', 'white', 'black']
lst = ["red","blue","green","white","black"]
lst = lst[1:]
lst

要素のスライス3

# 出力 ['red', 'blue', 'green']
lst = ["red","blue","green","white","black"]
lst = lst[:3]
lst

値の検索

# 出力 1
lst = ["r", "g", "b", "r", "e"]
lst.index("g")

値の件数

# 出力 2
lst = ["r", "g", "b", "r", "e"]
lst.count("r")

2次元配列

# 出力 15
lst = [[1,2,3,4,5],[6,7,8,9,0]]
sum(lst[0])

6. 制御構造/条件分岐

ブロックは半角スペース4つのインデントで表現します。

if

in演算子を使用すると値がリストの中に含まれるかを確認できます。

# 出力 True
lst = [1, 2, 3]
if 2 in lst:
    print(True)

※print()は出力する関数。

if else

文字列は==で比較可能です。

# 出力 True
text = "テスト"
if text == "テスト":
    print(True)
else:
    print(False)

if elif

# 出力 val = 100
val = 100
if val == 99:
    print("val = 99")
elif val == 100:
    print("val = 100")

for in リスト

# 出力 1 2 3 
lst = [1,2,3]
for val in lst:
    print(val, end=" ")

endはprint関数の引数。endはデフォルト引数でend = "\n"(改行)となっているので、end = " "を指定して半角スペースにしています。

for in range() 1

# 出力 0 1 2 
for val in range(3):
    print(val, end=" ")

for in range() 2

# 出力 0 1 2 
for val in range(0,3):
    print(val, end=" ")

for in enumerate

# 出力 0 Reg 1 Green 2 Blue 
lst = ["Reg", "Green", "Blue"]
for key, val in enumerate(lst):
    print(key, val, end=" ")

for in zip

# 出力 R Reg G Green B Blue 
lst1 = ["R", "G", "B"]
lst2 = ["Reg", "Green", "Blue"]
for key, val in zip(lst1,lst2):
    print(key, val, end=" ")

for in else

elseはfor文が完了した後に実行されます。(breakした場合は除く)

# 出力 3
count = 0;
for val in range(3):
    count += val;
else:
    print(count)

while

# 出力 0 1 2 
cnt = 0
while cnt < 3:      
    print(cnt, end = ' ')
    cnt += 1

while else

elseはwhile文が完了した後に実行されます。(breakした場合は除く)

# 出力 3
cnt = 0
while cnt < 3:      
    cnt += 1
else:
    print(cnt)   

7. dict(辞書)

Pythonの連想配列(キーと値のペア)です。

# 出力 ぶどう
dic = {"青森県": "りんご",
       "山梨県": "ふどう",
       "鹿児島県": "さつまいも"}
print(dic["山梨県"])

公式の解説:マッピング型(dict)

8. set(集合)

セットは要素が重複しません。

xxx = {1, 3, 5}

和集合 (A | B) OR

AとBの重複しない要素を返す。

# 出力 {1, 2, 3, 5}
A = {1, 3, 5}
B = {2, 3, 5}
A | B

差集合 (A - B)

AからBの要素を取り除く。

# 出力 {1}
A = {1, 3, 5}
B = {2, 3, 5}
A - B

交わり (A & B) AND

共通している要素を返す。

# 出力 {3, 5}
A = {1, 3, 5}
B = {2, 3, 5}
A & B

対称差 (A ^ B) XOR

共通している要素を取り除く。

# 出力 {1, 2}
A = {1, 3, 5}
B = {2, 3, 5}
A ^ B

リストからsetを生成する

# 出力 {1, 2, 3, 4, 5}
lst = [1,2,2,3,4,5]
set(lst)

※setなので値は重複しない。

if文でsetを比較する

# 出力 True
if {1, 3} <= {1, 3, 5}:
    print(True)
else:
    print(False)

公式の解説:集合型(set,frozenset)

9. tuple(タプル)

タプルは要素の変更ができません。(連結は可能)

xxx = (1,2,3,4,5)

10. モジュール

モジュールの呼び出し方。

パターン1

# randomモジュールをインポートする
import random
# 0から3のランダムの値を出力
random.randint(0,3)

パターン2

# randomモジュールをインポートして名称を変更する
import random as r
# 0から3のランダムの値を出力
r.randint(0,3)

パターン3

# randomモジュールのrandintをインポートする
from random import randint
# 0から3のランダムの値を出力
randint(0,3)

11. 関数

パターン1

# 出力 3
def calc(a,b):
    return a+b
calc(1,2)

パターン2

デフォルト引数。

# 出力 3
def calc(a,b=2):
    return a+b
calc(1)

パターン3

デフォルト引数。

# 出力 3
def calc(a=1,b=2):
    return a+b
calc()

パターン4

デフォルト引数の変更。

# 出力 6
def calc(a=1,b=2):
    return a+b
calc(b=5)

パターン5

リストを返す。

# 出力 [1, 2]
def calc(a,b):
    return [a,b]
a = calc(1,2)
print(a)

パターン6

リストを複数の変数で受け取る。これをアンパック代入と呼びます。

# 出力 1 2
def calc(a,b):
    return [a,b]
a,b = calc(1,2)
print(a, b)

パターン7

可変引数。

# 出力 [1, 2, 3, 4, 5]
def calc(a, b, *args):
    lst = [a, b]
    for val in args:
        lst.append(val)
    return lst
calc(1, 2, 3, 4, 5)

パターン8

可変引数。

# 出力 (1, 2, {'c': 3, 'd': 4})
def calc(a, b, **args):
    return a, b, args
calc(1, 2, c = 3, d =4)

パターン9

関数に注釈をつける。

# 出力 3
def calc(a:"引数1の説明", 
         b:"引数2の説明") -> "戻り値の説明":
    return a+b
calc(1,2)

12. 例外

try:
    print("次の行で例外を発生させます。")
    raise Exception("エラー")
except:
    traceback.print_exc()
else:
    print("例外が発生しない場合はココを通過する")
finally:
    print("例外の有無に関わらず必ずココは通過する")

出力結果

次の行で例外を発生させます。
例外の有無に関わらず必ずココは通過する
Traceback (most recent call last):
File "<ipython-input-76-a986067550cd>", line 3, in <module>
raise Exception("エラー")
Exception: エラー

13. 浮動小数点の誤差

浮動小数点の計算は次のように誤差が発生します。

#出力 0.30000000000000004
0.1 * 3

誤差をなくすには、Decimalクラスを使用します。

#出力 0.3
from decimal import Decimal
val = Decimal("0.1") * 3
float(val)   

14. type/isinstance

type()でオブジェクトの型を調査する。

# 出力 str
type("プチモンテ")

isinstance()で型が一致するか調査する

# 出力 True
isinstance("プチモンテ", str)





掲示板

ソフトウェア、ハードウェアのプログラミング用の掲示板を作成しました。質問やわからない事は@掲示板でユーザー同士で情報を共有して下さい。

関連記事



公開日:2018年06月25日 最終更新日:2018年08月24日
記事NO:02681