Python & MicroPython メモ

matplotlib / pylab / グラフを描く plot() / y 軸の値だけ与えた場合

y 軸の値だけ与えた場合は x 軸には y リストのインデックスが使われる。 from pylab import plot, show yList = [50,40,30,20,10,0] plot(yList, marker="o") show() from pylab import plot, show yList = [50,40,30,20,10,0] # x 軸を 0 から始めたくない…

matplotlib / pylab / グラフを描く plot() / マーカーを描く

from pylab import plot, show xList = [x for x in range(-5, 5+1)] yList0 = [x**2 for x in xList] yList1 = [x for x in xList] plot(xList, yList0, "o") # マーカーだけ描く。 plot(xList, yList1, marker="x") # マーカーと線と両方描く。 show()

matplotlib / pylab / グラフを描く plot()

from pylab import plot, show xList = [x for x in range(-5, 5+1)] yList = [x**2 for x in xList] plot(xList, yList) show()

内包表記 / 三角行列を作る

mat = [[0 for c in range(r+1)] for r in range(5)] for i in range(len(mat)): print(mat[i]) ――――――――――――――――――――――――――――――― Lua の場合: mat = {} for r = 1, 5 do mat[r] = {} for c = 1, r do mat[r][c] = 0 end end for i = 1, #mat do print("{"..…

内包表記 / 1 行の行列を 1 列の行列にする

# 1 行の行列を 1 列の行列にする。 a=[0, 10, "aa", -3, 3.65] b=[[v] for v in a] print(a) print(b)

存在しないインデックスを参照したときに None を返すようにする。

# リストに存在しない要素を参照したときに None を返すようにする。 table = [0,1,2,3,4] def safeAccess(table, index, default=None): try: if index < 0: return default else: return table[index] except: return default for i in range(-3, 7): prin…

リストのコピー

# 別の変数に代入しただけではコピーにならない。 a = [0,1,2,3,4] b = a a[1] = 99 print(b) # リストのコピーには copy() メソッドを使う。 a = [0,1,2,3,4] b = a.copy() a[1] = 99 print(b) # リスト全体を切り出してもよい。 a = [0,1,2,3,4] b = a[:] …

内包表記 / 行列を作る

内包表記が使える。 row = 2 col = 3 init = None mat = [[init for i in range(col)] for i in range(row)] print(mat) ――――――――――――――――――――――――――――――――――――――― Lua の場合: row = 2 col = 3 init = 9 mat = {} for r = 1, row do mat[r] = {} for c = 1,…

ジェネレーター

# return ではなく yield を使う。 def gene(a): yield a*2 yield a**2 yield a+100 for v in gene(10): print(v) # 普通の函数としては使えない。 g = gene(10) print(g)

可変長引数 / 假引数をタプル引数にする

# 假引数をタプル引数にする。 def sum(*args): sute = 0 for v in args: sute += v return sute a = sum(1, 2, 3, 4, 5) print(a) ――――――――――――――――――――――――――――――――― Lua の ... と同じ。

キーボード入力を取得する input()

input() で取得したキーボード入力は文字列として認識される。 num = input("Enter any number > ") print(num * 2) print(float(num) * 2)

何もしない pass

if の実行文は空にできない。何も実行しない場合は pass を入れておく。 a = -10 if 0 < a and a < 5: pass else: print("passed")

and 演算子の省略

範囲が簡単に指定できる。 a = 3 if 0 < a and a < 5: print("normal") if 0 < a < 5: print("special")

for ループにも while ループにも else が利用できる

for char in "abcde": print(char) else: print("end of for") sum = 0 while sum < 5: print(sum) sum += 1 else: print("end of while")

for ループ / 文字を 1 文字ずつ取り出す

for char in "abcde": print(char) ―――――――――――――――― Lua の場合:

for ループ / range() を使う

print("case 1:") for i in range(5): print(i) print("case 2:") for i in range(0, 5): print(i) print("case 3:") for i in reversed(range(0, 5)): print(i) print("case 4:") for i in range(4, -1, -1): print(i) ―――――――――――――――――――――――― Lua の場合:

for ループ

for v in [0,1,2,3,4]: print(v) ――――――――――――――――――――― Lua の場合:

IDLE / インデントの調整

該当する行を選択して下の組み合わせでキーを押せばインデントが調整できる。 Ctrl + [ Ctrl + ]

print() の実行結果を改行しない

print("aaa") print("bbb") print("ccc") print("ddd", end="") print("eee", end="") print("fff")

エディター上では改行するが実際には改行しない

print("aaa\ bbb\ ccc")

三重クォート / エディター上の改行を活かす

print("""aaa bbb ccc""")

raw String でエスケープする

// 演算子、divmod() 函数

// 演算子は小数点以下を切り捨てる割り算。 divmod() 函数を使えば商と余りとが一度に求まる。