python復習まとめ5
リスト内包
リスト内包は、シーケンス型(リスト、ディクショナリ、タプル)からリストを生成する簡単な表記です。
よくある使い方としては、あるシーケンスの要素それぞれに何らかの処理を加えて
新しいシーケンスを生成したり、
ある条件にかなう要素のみを取り出してサブシーケンスを生成するという使い方があります。
#リストの要素を2倍にする >>> list = [1,2,3,4,5] >>> [v * 2 for v in list] [2, 4, 6, 8, 10] #リスト内の文字列の空白を削除する >>> fruitlist = [" banana ", " orange ", "apple "] >>> [fruit.strip() for fruit in fruitlist] ['banana', 'orange', 'apple'] #文字列にも適用可能である >>> moji = "hogefuga" >>> print [char for char in moji] ['h', 'o', 'g', 'e', 'f', 'u', 'g', 'a']
例外処理
文や式が構文的に正しい場合でも、実行しようとするとエラーが起きることがある。
実行中に検知されるエラーは例外と呼ばれるが、
これは必ずしも致命的なものではない。
pythonでは、予め起こりうる例外を予測し、例外に応じて処理を
書くことができる。
また、正しく例外を処理できた場合、エラーを抜けて
プログラムを続けることが可能である。
まずはソースコードから。
def devide(x, y): try: if(x == 0): raise NameError #(3) result = x / y except ZeroDivisionError: #(2) print"can't devide by zero" except NameError: #(3) print "NameError" except: print "Error" #(4) else: print "result = ",result #(1) finally: print if __name__ == "__main__": devide(2,1) #(1) devide(2,0) #(2) devide(0,2) #(3) devide('a','b') #(4)
プログラムの説明
-try節の中に例外が起こりえる処理を記述する。- except節で起きた例外に応じた処理を記述する。
- else節はtry節で例外が起きなかった場合に適用される。
- raiseは任意の例外をプログラマが呼び出したい時に用いる。
- finally節はtry節で例外が起こったかどうかに関わらず、適用される。後処理などを書くことが多い。