我正在编写一个生成器函数,它给我字母字符,就像这样,
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(),
Run Code Online (Sandbox Code Playgroud)
这会产生,
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
Run Code Online (Sandbox Code Playgroud)
这有效......
我希望函数跳过donotInclude列表中的一些字符.我可以这样做是在发电机外面,像这样,
k = gen_alphaLabels()
donotInclude = ['D','K','J']
for i in range(26):
r = k.next()
if r not in donotInclude:
print r,
Run Code Online (Sandbox Code Playgroud)
这产生了跳过'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
Run Code Online (Sandbox Code Playgroud)
有没有办法包括跳过生成器函数中字符的逻辑?有些事情沿袭
def gen_alphaLabels():
a = range(65,91)
for i in a:
r = chr(i)
if r in donotInclude:
yield self.next()
else:
yield r
Run Code Online (Sandbox Code Playgroud)
continue 救援:
def gen_alphaLabels():
a = range(65,91)
for i in a:
r = chr(i)
if r in donotInclude:
continue
yield r
Run Code Online (Sandbox Code Playgroud)
不使用continue +稍微缩短代码:
def gen_alphaLabels(donotInclude):
for i in range(65,91):
char = chr(i)
if char not in donotInclude:
yield char
Run Code Online (Sandbox Code Playgroud)