Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

【Python】イテレータってのをやってみた

こんばんは、葛の葉です。

今回はPythonイテレータをやってみました。

イテレータは要素を一つずつ出力するオブジェクトを生成することのようです。

ちょっと前につくったPythonで特定文字以降の文字を削除する(正規表現を使わない)イテレータで実装します。

kuzunoha-ne.hateblo.jp

実行環境

Python3.6.5

コードはこんな感じ

class Splitter(object):
    def __init__(self, array, waste_word):
        self.array = array
        self.waste_word = waste_word

    def __iter__(self):
        for i in self.array:
            if self.waste_word in i:
                yield i.split(self.waste_word)[0]
            else:
                yield i

dinners = ['チキングリル', 'シェフの気まぐれサラダ(工場生産)', 'ドラゴンのしっぽビール(発泡酒)', 'スコーン']

spliter = Splitter(
    array=dinners,
    waste_word="("
    )

new_array = []

for i in spliter:
    new_array.append(i)

# リスト内包表記なら 
# [new_array.append(i) for i in spliter]

print(new_array)

↓出力結果↓

['チキングリル', 'シェフの気まぐれサラダ', 'ドラゴンのしっぽビール', 'スコーン']

出来ました!!

イテレータは要素の出力が一回一回になるので、メモリを圧迫しにくいそうです。

何がどう良いのかはこれから調べてみますけどね(´;ω;`)