===== 基本構文 =====
==== コメント ====
#記号やヒアドキュメントを使用する。
# 1行コメント
a = 1 # 行の途中からコメントにすることも可能
"""
ヒアドキュメントを変数に代入しないことで
コメント扱いにすることが可能。
"""
==== 命令文の終了 ====
命令文の終了はセミコロン(;)を使用する。
a = 1; b = 2; c = 3;
d = 4 # 1行に1命令の場合、省略可能
==== 演算子 ====
^ 分類 ^ 種類 ^ 演算子 ^ 使用例 ^
| 代入演算子 | 加算 | += | 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 |
| 論理演算子 | 論理積 | %%and%% | (a > b) %%and%% (b < c) |
| ::: | 論理和 | %%or%% | (a > b) %%or%% (b < c) |
| ::: | 否定 | not | not(a < b) |
| ビット演算子 | 論理積 | %%&%% | a %%&%% b |
| ::: | 論理和 | %%|%% | a %%|%% b |
| ::: | 排他的論理和 | %%^%% | a %%^%% b |
| ::: | ビット反転 | ~ | ~a |
| ::: | 左ビットシフト | %%<<%% | a %%<<%% 1 |
| ::: | 右ビットシフト | %%>>%% | a %%>>%% 1 |
=== 代入演算子 ===
・・・
=== 比較演算子 ===
・・・
=== 論理演算子 ===
論理演算子%%and, or, not%%では、bool型True, Falseだけでなく、数値/文字列/リストなども真偽値として評価される。
^ 評価結果 ^ 種類 ^
| False | ・bool型のFalse\\ ・None\\ ・数値の0(int)または0.0(float)\\ ・空文字列''\\ ・空コンテナ(リスト、タプル、辞書など)[], (), {} |
| True | 上記以外 |
論理演算の結果はbool関数で取得可能。ただし'0'や’False'を評価するには、distutils.util.strtobool()を使用する。
=== ビット演算子 ===
・・・
==== 関数 ====
=== 関数呼び出し ===
Pythonには関数とメソッドの2種類存在
^ 種類 ^ 説明 ^ 呼び出し方 ^ 例 ^
| 関数 | - | 関数名(引数) | print("aiueo") |
| メソッド | - | データ.メソッド名(引数) | - |
=== 関数定義 ===
# 引数なし
def hello1():
print("Hello !")
# 引数あり
def hello2(name1, name2):
print(f"Hello {name1} and {name2} !")
# 引数のデフォルト値あり
def hello3(name = "foobar"):
print(f"Hello {name} !")
# 戻り値あり
def calc1(height, weight):
ret = height * weight
return ret # 値の返却
a = calc2(100 * 200) # 呼び出し
# 無効な戻り値を戻したい場合
def calc2(i, j)
if i < 100:
return None # 無効値という意味でNoneを返す
return height * weight
==== リストなど ====
=== リスト ===
要素を[]の中で記述して定義する。
a = [ 1, 2, 3, 4, 5 ] # 数値のリスト
b = [ "aaa", "bbb", "ccc" ] # 文字列のリスト
c = [ 1, "aaa", 2, "bbb", 3, "ccc" ] # 数値、文字列の混在も可能
d = [] # 空のリスト
他の型(文字列やrange())からリストを生成する場合、list()を使用する。
s1 = list("Hello") # [ 'H', 'e', 'l', 'l', 'o' ]のリストが生成
s2 = list(range(0, 3)) # [ 0, 1, 2 ]のリストが生成
s3 = list() # []の空リストが生成
複数のリストを纏めた新しいリストを作成する場合、zip()やenumerate()を使用する。
s1 = [ 1, 2, 3 ]
s2 = [ 4, 5, 6 ]
s3 = [ 7, 8, 9 ]
tmp1 = zip(s1, s2, s3)
t1 = list(tmp1) # [ ( 1, 2, 3 ), ( 4, 5, 6 ), ( 7, 8, 9 ) ]のリストが生成
# 縦に要素が結合されるので注意
s4 = [ "aaa", "bbb", "ccc" ]
tmp2 = enumerate(s4)
t2 = list(tmp2) # [ ( 0, "aaa" ), ( 1, "bbb" ), ( 2, "ccc" ) ]のリストが生成
tmp3 = enumerate(s4, 1)
t3 = list(tmp3) # [ ( 1, "aaa" ), ( 2, "bbb" ), ( 3, "ccc" ) ]のリストが生成
== 参照 ==
s1 = [ 1, 2, 3, 4, 5 ]
t1 = s1[0] # 0番目の要素(1)を取得
t2 = s1[1:3] # 1番目~3番目の要素[2, 3]を取得
t3 = s1[0:5:2] # 0番目~5番目の要素を増分2で取得[1, 3, 5]
u1, u2, u3, u4, u5 = s1 # s1の各要素を先頭から順番にu1~u5変数へ代入
== 追加 ==
s1 = []
s1.append("aaa") # [ "aaa" ]
s1.append("bbb") # [ "aaa", "bbb" ]
s1.append("ccc") # [ "aaa", "bbb", "ccc" ]
s1.insert(1, "ddd") # [ "aaa", "ddd", "bbb", "ccc" ]
== 更新 ==
s1 = [ "aaa", "bbb", "ccc" ]
s1[2] = "ddd" # [ "aaa", "ddd", "ccc" ]
== 削除 ==
s1 = [ "aaa", "bbb", "ccc" ]
s1.pop() # [ "aaa", "bbb" ]
s1.pop(0) # [ "bbb" ]
== 多次元リスト ==
[]を入れ子にすることで多次元リストの作成が可能。
s1 = [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] # 2次元リスト
=== タプル ===
タプルはリストと異なる定義後は要素の書き換えができない。定数値や辞書のキーに使用する。
要素を()の中で記述して定義する。
a = ( 1, 2, 3, 4, 5 ) # 数値のタプル
b = ( "aaa", "bbb", "ccc" ) # 文字列のタプル
c = ( 1, "aaa", 2, "bbb", 3, "ccc" ) # 数値、文字列の混在も可能
d = ( 1, ) # 要素が1つの場合、後ろに,(カンマ)が必要
e = () # 空のタプル
f = a + b # 既存のタプルから新しいタプルを作成することも可能
g = a * 2 # 同上
他の型(文字列やrange())からリストを生成する場合、tuple()を使用する。
s1 = touple("Hello") # ( 'H', 'e', 'l', 'l', 'o' )のタプルが生成
s2 = touple(range(0, 3)) # ( 0, 1, 2 )のタプルが生成
s3 = touple() # ()の空タプルが生成
== 参照 ==
s1 = ( 1, 2, 3, 4, 5 )
t1 = s1(0) # 0番目の要素(1)を取得
t2 = s1(1:3) # 1番目~3番目の要素(2, 3)を取得
t3 = s1(0:5:2) # 0番目~5番目の要素を増分2で取得(1, 3, 5)
u1, u2, u3, u4, u5 = s1 # s1の各要素を先頭から順番にu1~u5変数へ代入
=== セット ===
要素を{}の中で記述して定義する。セットは順序性を持たないため、重複する要素は登録できない。またスライスを使用した要素の抽出もできない。
a = { 1, 2, 3, 4, 5 } # 数値のセット
b = { "aaa", "bbb", "ccc" } # 文字列のセット
c = { 1, "aaa", 2, "bbb", 3, "ccc" } # 数値、文字列の混在も可能
# d = {} # この記述で空のセットは生成できない。後述のset()を使用する
他の型(文字列やrange())からリストを生成する場合、set()を使用する。
s1 = set("Hello") # { 'H', 'e', 'l', 'l', 'o' }のセットが生成
s2 = set(range(0, 3)) # { 0, 1, 2 }のセットが生成
s3 = set() # {}の空セットが生成
== 追加 ==
s1 = set()
s1.add("aaa") # { "aaa" }
s1.add("bbb") # { "aaa", "bbb" } ※順序性は保証しない
s1.add("ccc") # { "aaa", "bbb", "ccc" } ※順序性は保証しない
== 削除 ==
s1 = { "aaa", "bbb", "ccc" }
s1.remove("bbb") # [ "aaa", "ccc" ]
== 存在判定 ==
s1 = { "aaa", "bbb", "ccc" }
if "bbb" in s1: # s1に"bbb"が存在すれば、Trueとなる
print("bbb is exists.")
=== 辞書 ===
キーと値を:(コロン)で区切り、{}の中で記述して定義する。同名のキーを指定した場合、後勝ちで上書きされる。
a = { "foo": 1, "bar": 2, "hoge": 3 } # 値が数値
b = { "foo": "aaa", "bar": "bbb", "hoge": "ccc" } # 値が数値
c = { "foo": "aaa", "bar": 2, "hoge": 3 } # 値が数値
d = {} # 空の辞書を生成
== 追加・参照 ==
# 追加
s1 = {}
s1["foo"] = 1 # { "foo": 1 }
s1["bar"] = 2 # { "foo": 1, "bar": 2 }
s1["hoge"] = 3 # { "foo": 1, "bar": 2, "hoge": 3 }
# 参照
t1 = s1["bar"] # t1に2が代入
==== インポート ====
特定の関数を使用する場合、モジュールのインポートが必要。
import math # ceil関数を使用するためのインポート
print(math.ceil(a))