トップ «前の日記(2010-08-03) 最新 次の日記(2010-08-05)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|

2010-08-04 :-)

_ 朝ッ

0520 起床

_ 仕事

0830 出勤

デモ準備

_ ,

@mizchi が居た聖剣伝説 LoM

_

いまなんじ?

_ [Python][デザインパターン][Iterator]Python でデザインパターン - Iterator

書き換え [ 20090512#p07 ]

Python で Iterator を実装するにはイテレータを使う方法とジェネレータを使う方法があるようだ。ジェネレータならば yield するだけなのでこれは Ruby に近い書き方になるのか。

イテレータ版

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Head First デザインパターンを写経する - 9章 Iterator パターン - ヨタの日々(2009-05-12)
# http://www.area51.gr.jp/~rin/diary/?date=20090512#p07

# イテレータ版

class Menu:
  def __init__(self, item):
    self.item = item
    self.count = len(item)

  def __iter__(self):
    return self

  def next(self):
    if self.count == 0:
      raise StopIteration
    i = len(self.item) - self.count
    self.count -= 1
    return self.item[i]


def main():
  menuItems = [ "K&Bのパンケーキ朝食", "通常のパンケーキ朝食", "ワッフル"]
  menu = Menu(menuItems)
  for n in menu:
    print n

main()

ジェネレータ版

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Head First デザインパターンを写経する - 9章 Iterator パターン - ヨタの日々(2009-05-12)
# http://www.area51.gr.jp/~rin/diary/?date=20090512#p07

# ジェネレータ版

def menu(item):
  for index in range(len(item)):
    yield item[index]


def main():
  menuItems = [ "K&Bのパンケーキ朝食", "通常のパンケーキ朝食", "ワッフル"]
  for n in menu(menuItems):
    print n

main()

実行結果は両方ともこう

K&Bのパンケーキ朝食
通常のパンケーキ朝食
ワッフル

ref.