具有功能的列表理解中的“继续”

时间:2019-01-06 15:14:21

标签: python

如何将continue放入具有功能的列表理解中?

以下示例代码...

import pandas as pd

l = list(pd.Series([1,3,5,0,6,8]))

def inverse(x):

    if x == 0:
        print('not ok')
        continue
    else:
        print('ok')

    return 1/x

[inverse(x) for x in l]

...给予:

  

SyntaxError:“继续”无法正确循环

预期输出为:

ok
ok
ok
not ok
ok
ok
[1.0, 0.3333333333333333, 0.2, 0.16666666666666666, 0.125]

1 个答案:

答案 0 :(得分:4)

如果您绝对需要打印,可以按如下所示将功能映射到列表,然后过滤出None

不幸的是,您不能在理解列表中调用continue

l = [1,3,5,0,6,8]

def inverse(x):
    if x == 0:
        print('not ok')
        return
    else:
        print('ok')
        return 1/x

print([x for x in map(inverse, l) if x is not None])

如果您有多个条件,那么很容易更改inverse方法