[英]Breaking from a loop in list comprehension in python
我有一個簡單的任務,即從給定元素上方的列表(按降序排列)中選擇所有元素。 即
X=[32,28,26,21,14,11,8,6,3]
Threshold=12
Result=[32,28,26,21,14]
我最初做的事情很簡單
FullList=[x for x in FullList if x>=Threshold]
但是,由於列表已排序,因此我可以(並且需要)在兩者之間進行切換。
多撞頭和一個美麗的教程后在這里 ,我終於想出了以下解決方案。
def stopIteration():
raise StopIteration
FullList=list(x if x>=Threshold else stopIteration() for x in FullList )
但是,當我編寫以下語句時,它給了我一個語法錯誤:
FullList=list(x if x>=Threshold else raise StopIteration for x in FullList )
這種行為背后的原因是什么?
raise
是一個語句,但是在另一個語句中,您只能使用表達式。
另外,為什么不使用itertools.takewhile
呢?
full_list = list(itertools.takewhile(lambda x: x >= threshold, full_list))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.