ジェネレーター関数の値をスキップする

Source python generator

私は、アルファ文字を与えるジェネレーター関数を書いています。
def gen_alphaLabels():
    a = range(65,91)
    for i in a:
        yield chr(i)

k = gen_alphaLabels()
for i in range(26):
    print k.next(),

これにより、
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

これは動作します...。

donotIncludeリストにあるいくつかの文字をスキップする関数を使用します。私はこれをジェネレーターの外で行うことができました、
k = gen_alphaLabels()
donotInclude = ['D','K','J']
for i in range(26):
    r = k.next()
    if r not in donotInclude:
        print r,

これにより、「D」、「K」、および「J」をスキップするという望ましい結果が得られます。
A B C E F G H I L M N O P Q R S T U V W X Y Z

ジェネレーター関数に文字のスキップに関連するロジックを含める方法はありますか?の線に沿ったいくつかのこと
def gen_alphaLabels():
    a = range(65,91)
    for i in a:
        r = chr(i)
        if r in donotInclude:
            yield self.next()
        else: 
            yield r
推奨答え
続行+コードの少し短縮を使用せずに:
def gen_alphaLabels(donotInclude):
    for i in range(65,91):
        char = chr(i)
        if char not in donotInclude:
            yield char
その他答え 1
救助するcontinue:
def gen_alphaLabels():
    a = range(65,91)
    for i in a:
        r = chr(i)
        if r in donotInclude:
            continue
        yield r
その他答え 2
string.uppercaseの代わりにchrを使用できます(ifの代わりにリスト内包表記も使用しました):
import string
def gen_alphalabels(exclude):
    labels = [c for c in string.uppercase if c not in exclude]
    for label in labels:
        yield label

上記のリスト内包表記は好みの問題かもしれませんが、Python 3.3でyield fromを使用できるため、さらに簡潔になります。
import string
def gen_alphalabels(exclude):
    labels = [c for c in string.ascii_uppercase if c not in exclude]
    yield from labels
その他答え 3
この場合、genで変数を使用する必要はありません。
def gen_alphaLabels():
    for i in range(65,91):
        if chr(i) not in donotInclude:
            yield (chr(i))

関連記事

データ注釈を使用した多対多のマッピング
iOS用Google + SDKプログラムでサインインボタンを追加
networkxとmatplotlib間の相互作用
Pythonの「RCut」関数
Matplotlibでテキストをアニメーション化する方法は?