Python理解:对于x in [temp for temp in xlist,如果temp< = xmax]:

时间:2012-07-02 14:36:16

标签: python list-comprehension

for x in [temp for temp in xlist if temp<=xmax]: 

这段代码有效,但看起来像是一种不必要的外来口吃方式来启动for循环。

是否有更清晰的语法?

4 个答案:

答案 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)