Я пишу функцию генератора, который дает мне альфа-символы, как это так,перепрыгивал значений в функции генератора
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
Замечание о части вашего кода, который непосредственно не связанной с вашим вопросом: Для потребителя вашего генератора, вероятно, вы должны сделать 'для с в get_alphaLabels(): печать с,' а не зацикливание на диапазоне и вручную вызывая 'next()'. Это будет важно, когда ваш генератор даст неизвестное количество значений! – Blckknght