3
考慮以下字符串我可以跳出一個python生成器嗎?
long_string = '#' * 4 + 'a' * 10 + '#' * 4
print(long_string)
####aaaaaaaaaa####
我想循環並獲得唯一的前幾個字符,直到該字符是不一個'#'
我可以遍歷並不僅僅是'#'
''.join(x for x in long_string if x.startswith('#'))
'########'
這太多了。
我想要做這樣的事情
def gen_break(long_string, mychar):
i = iter(long_string)
s = next(i)
while s == mychar:
yield s
s = next(i)
''.join(gen_break(long_string, '#'))
'####'
該停止迭代時,它遇到了哪些突破的條件。有沒有辦法在(this for this in that)
語法中更優雅地執行此操作?
注:
這是爲了突出我問的問題一個人爲的例子。我沒有找到解析這個示例字符串的方法。我正在尋找一種以優雅的方式打破迭代的方式,最好使用理解語法。
你不能在基因xp中「突破」。不過,你可以使用'itertools.takewhile'。 – user2357112
[itertools.takewhile](https://docs.python.org/2/library/itertools.html#itertools.takewhile)完全是這樣的 – Wondercricket
您可以故意設置您的情況/發生器,以便它精確地導致錯誤你想突破的點? – toonarmycaptain