純粋に自分のために書く
・for, if, whileの:を消す
・for i in range(start, stop): → for i = start: stop-1
・
for i in range(start, stop, step):
.....
↓
for i = start:step:end # stopとendの違いに注意
......
end
・Juliaでは、if, while の条件はBool値しか無理?
・インデントの終わりにendをつける
・juliaファイル(*.jl) の内部では、
c = 0 # グローバル変数の定義
for i = 1:10
c += i # ここのcはグローバル変数として扱われない。
# ので事前に定義されていない的なエラー。
end
これは
function main()
c = 0 # ローカル変数定義
for i = 1:10
c += i
end
end
main()
みたいに書かなきゃダメ。インデントが入ると、グローバルな変数じゃなくなるっぽい。ベクトルにも当てはまった。そして、Jupyter Notebookで実行したときはこんな不思議減少は起こらなかった。何故?
・Pythonだとリストや辞書とかを引数にする関数は、関数内でリストや辞書の中身を書き換えても、returnして上書きしない限り、更新されないっぽい。
def f(lst):
lst[0] *= 0
lst = [1 for i in range(10)]
f(lst)
print(f[0]) # 0
↓
function f(lst)
lst[1] *= 0
end
lst = [1 for _ = 1:10]
f(lst)
println(f[1]) # 1
ってかんじ。引数で受け取った時点でディープコピーして、関数内では関数内でしか通用しないローカル変数としているのかも。
・True, False → true, false
・None → nothing
・def → function
・len(obj) → length(obj)
・min(obj), max(obj) → minimum(obj), maximum(obj)
・df = pd.DataFrame の大きさは(index_size, column_size) = size(df) で取得
・要素同士の積(アダマール積)は、 np_array * np_array → vector .* vector といったように .* を使う
・内積は、np.dot(np_array, np_array) → vector '* vector
・np.dot(arr1, arr2) → vector1 \cdot vector2
・and, or → &&, ||
・set(), dict(), list() → Set(), Dict(), List()
・{key1:value1, key2:value2} → Dict(key1=>value1, key2=>value2)
・setobject.add(v), listobject.append(v) → push!(set, v), push!(lst, v)
・list_or_arr_or_tuple[:stop], list_or_arr_or_tuple[start:] → arr_or_tuple[1:end], arr_or_tuple[start:end] という風に、区間の前後を省略せずに書く
・配列とタプルのインデックスは、1始まり。おかげでインデックスに%を使いたいときとか大変
・py_list[-1], py_tuple[-1] → jl_array[end], jl_tuple[end] といった具合に、endを使う。py_list[-2]はjl_array[end-1]みたいに書く
・py_list.append(value) → push!(jl_array, value)
・py_set.add(value) → push!(jl_set, value)
・sort(py_list), sorted(py_list) → sort!(jl_array), sort(jl_array)
・a**b → a^b (Excelと同じで分かりやすい!)
・"string_1" + "string_2" → "string_1" * "string_2" (どうしてそうなった????)
・"string" * 10 → "string" ^ 10
・str型は"string"、chr型は'c' といった具合に、"と'を使い分ける。
・"string" * 'c' は"stringc"
・"string" == "string" はture
・"c" == 'c' はfalse
・’c’ == 'c' はtrue