簡體   English   中英

在python中的列表理解中擺脫循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM