仕事でPython
を使うようになったのでこれまで惰性で書いてた部分も含めて勉強中
python
の内包表記でのif
文やif
~else
文の使い方がいつも思い出せなくなって毎回調べてるのでメモ
まずは元のデータ あるバイナリデータからオフセットのリストを取り出したもの
print(ofslist) (512, 20992, 25088, 26112, 36352, 39424, 40448, 44544, 45568, 56832, 60416, 60928, 62464, 62976, 63488, 64000, 64512, 67072, 67584, 68096, 69120, 81408, 81920, 83456, 84992, 87552, 88064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
ifを使用 0より大きい部分だけ欲しい
print([x for x in ofslist if x > 0]) [512, 20992, 25088, 26112, 36352, 39424, 40448, 44544, 45568, 56832, 60416, 60928, 62464, 62976, 63488, 64000, 64512, 67072, 67584, 68096, 69120, 81408, 81920, 83456, 84992, 87552, 88064]
if~elseを使用
基本的に前詰めで入ってるはずだけど、異常データで途中に0があると解析転けるから数値じゃないデータを入れておきたい
今回はとりあえず'No Data'
に置き換えた
print([x if x > 0 else 'No data' for x in ofslist]) [512, 20992, 25088, 26112, 36352, 39424, 40448, 44544, 45568, 56832, 60416, 60928, 62464, 62976, 63488, 64000, 64512, 67072, 67584, 68096, 69120, 81408, 81920, 83456, 84992, 87552, 88064, 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data', 'No data']