pythonの配列・リスト・三項演算子・ラムダ式について(for文処理で、処理内容が一行なら、map関数+ラムダ式で短く記述できるって事?配列は同じ型じゃないとダメ!リストは、異なる型でもOK! 三項演算子は書き方が英語っぽい!)
1 2 3 4 5 |
# 配列は同じ型じゃないとダメ! import array # インポートが必要 # 配列の型を指定する必要がある。i=整数, str=文字型 ary = array.array('i',[1, 'python', 100]) #[結果] TypeError: an integer is required (got type str) |
1 2 3 4 |
# リストは、異なる型でもOK! lst = ['abcf', 1.23, 100] for i in lst: print(i) |
なら、全部リストで良いのでは…?
実際、標準ライブラリのarrayは使われずに、numpy.ndarrayが使われる事が多い
数値型配列として数値計算などは、配列の方が高速。
ラムダ式とは、なんぞや?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ラムダ式の書き方は、lambda 引数: 処理内容 plus_one = lambda x: x+1 # 戻り値は関数オブジェクトで、変数に格納すると、関数として使える plus_one(10) # リストで数列を生成 lst = [1, 2, 3, 4, 5] # map関数は、第一引数が処理する関数名、第二引数が処理したいリストデータで、全要素に対して処理を行ってくれる ret = map(plus_one, lst) # 戻り値がリストじゃなくて、イテレータ・オブジェクト # list関数でリスト型に変換 [2, 3, 4, 5, 6] list(ret) # 一行でまとめて書くと、こんな感じ list(map(lambda x: x+1, lst)) |
pythonでif文を一行で書くなら、ラムダ式?三項演算子?
1 2 3 |
i = 1 result = '偶数' if i % 2 == 0 else '奇数' print(result) # 奇数 |
pythonの三項演算子って、こんなんなんだ…。
条件式が真のときに評価される式 if 条件式 else 条件式が偽のときに評価される式
結論が先に書かれてて、その後に判定文があって、elseが最後なのか…。英語っぽい順番だな。
trueの時の戻り値、判定文、falseの時の戻り値