変数/演算子/制御構造/list/dict/set/tuple/関数/例外 [Pythonの基本]
前回の続きで「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+b | aにbを足す |
- | 減算 | a-b | aからbを引く |
* | 乗算 | a*b | aとbを掛ける |
/ | 除算 | a/b | aをbで割る |
// | 整数の除算 | a//b | aをbで割って、小数点を切り下げる。 |
% | 剰除算 | a%b | aをbで割った余りを求める |
** | 累乗 | a**b | aをb回、乗算する |
= | 代入 | a=b | bをaに代入 |
+= | 加算と代入 | a+=b | aにbを足した値をaに代入する(a=a+bと同じ) |
-= | 減算と代入 | a-=b | aからbを引いた値をaに代入する(a=a-bと同じ) |
*= | 乗算と代入 | a*=b | aにbを掛けた値をaに代入する(a=a*bと同じ) |
/= | 除算と代入 | a/=b | aをbで割った値をaに代入する(a=a/bと同じ) |
%= | 剰余と代入 | a%=b | aをbで割った余りの値をaに代入する(a=a%bと同じ) |
//= | 整数の除算と代入 | a//=b | aをbで割って、小数点を切り下げた値をaに代入する(a=a//bと同じ) |
**= | 累乗と代入 | a**=b | aをb回、乗算した値をaに代入する(a=a**bと同じ) |
関係演算子
演算子 | 使用例 | 意味 |
---|---|---|
> | a>b | aはbより大きい |
< | a<b | aはbより小さい |
>= | a>=b | aはb以上 |
<= | a<=b | aはb以下 |
== | a==b | aとbは等しい |
!= | a!=b | aとbは等しくない |
in | a in b | aはbに存在する |
is | a is b | aとbは同一オブジェクトである |
論理演算子
演算子 | 使用例 | 意味 |
---|---|---|
not | not a | aが偽ならば真。aが真ならば偽 |
and | a>0 and a<=9 | aが1以上かつ9以下ならば真、それ以外は偽 |
or | a>100 or b==200 | aが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["山梨県"])
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)
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)