配列と別れる50の方法《01》JPL の事例から
Python.use(better) # OOP への道 《Python3.1, Jython2.5.0, IronPython2.6.x》
JPL の事例から
《著》真樹育未・後藤いるか・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12 ● 第1版♪1993/05/23 ● 第2版♪2003/05/25
■ 概要
配列はいくつかの問題を抱え「コードを汚染」する一因になり「バグの温床」になりがちです。
伝統的なC言語風の for 文や悪名高い switch 文、配列の呪縛から解かれ、オブジェクト指向プログラミング〔OOP〕の醍醐味を堪能するための準備を行います。
■ 関連記事
- Java プログラマーのための Python 導入ガイド
- 例題で学ぶ Jython/Swing デザインパターン《Jython2.5》改訂版
- ゲームに学ぶ Jython/Swing フレームワーク《Jython2.5》改訂版
- IronPython で学ぶ WPF プログラミングの世界《IronPython2.6》改訂版
何が問題か
Java 言語の解説書 JPL には、伝統的な配列を利用した事例を紹介しています。しかし、配列はいくつかの問題を抱え、「コードを汚染」する一因になり「バグの温床」になりがちです。そこで、その問題点を明らかにするとともに、それを解消する術を紹介します。
配列の隘路
》作業中です《
■ for 文(伝統的な for 文への未練)
def average(values): if values == None: raise ValueError() elif len(values) == 0: raise ValueError() else: sum = 0.0 for i in range(len(values)): sum += values[i] # (@.@) ... is a bit worrying return sum / len(values)
■ for 文
def average(values):
if not values:
raise ValueError()
else:
sum = 0.0
for e in values:
sum += e # (^.^) ... out of danger
return sum / len(values)
from functools import reduce def average(values): if not values: raise ValueError() else: return reduce(lambda s,e: s+e, values, 0) / len(values)
def average(values): if not values: raise ValueError() else: return sum(values) / len(values)
Tips
》作業中です《
Last updated♪2009/07/11