for x in [temp for temp in xlist if temp<=xmax]:
这段代码有效,但看起来像是一种不必要的外来口吃方式来启动for循环。
是否有更清晰的语法?
答案 0 :(得分:4)
你想在这做什么?
for x in xlist:
if x > xmax: continue
会奏效。 (你的for循环的其余部分做了什么?)如果只使用list-comp就可以实现,那可能就是这样。如果它不能,那么你可能想要上面的成语,或者你在其他答案中看到的一些变体。
答案 1 :(得分:0)
for x in xlist:
if x <= xmax:
#do stuff
顺便说一下,如果可能的话,你想在原始版本中使用生成器表达式,因为这不会预先创建一个不必要的列表。
for x in (temp for temp in xlist if temp <= xmax):
#etc.
答案 2 :(得分:0)
for x in filter(lambda x: x<=xmax, xlist):
pass
# or with itertools (faster on python2, on py3 these are equivalent):
import itertools
for x in itertools.ifilter(lambda x: x<=xmax, xlist):
pass
但是请看@mgilson answer,这表明您可以将整个代码重写为列表理解。
答案 3 :(得分:0)
为什么不filter
?
filter(function, iterable)
filter(function, iterable)
相当于[item for item in iterable if function(item)]
在你的情况下:
filter(lambda item: item <= xmax, xlist)