通过方法 Python 返回"pass"迭代



是否有任何pythonic方法可以从以下方法返回"pass"迭代:

import numpy as np
x = [1, 2, np.nan, 4]
for q in x:
    if np.isnan(q):
        pass
    else:
        print q
1
2
4

我正在尝试实现(在更复杂的代码中)类似的东西:

import numpy as np
x = [1, 2, np.nan, 4]
def skip(var):
    if np.isnan(var):
        return pass
    else:
        return var
for q in x:
    var(q)
    print q

有什么方法可以做到这一点吗? 通过方法传递迭代?

你不能返回pass,但你可以只做return这将隐式return None 然后,您可以在调用代码中使用 None 来检查它是否已传递。

你只需要将一个标志从方法skip 传递到 for 循环。没有办法传递通行证。

正如其他人所指出的,返回隐式返回 None。

由于您没有改变变量,因此在 if 块中运行函数后嵌套循环部分是安全的。

def skip(var):
    if not np.isnan(var):
        return var
for q in x:
    if var(q):
        print q

为什么不直接使用 filter

for q in filter(lambda z: not np.isnan(z), x):
    # put the rest of your code here
    print q

filter相当python化和轻量级,并确保您的循环块只需要担心积极的情况。

def skip(var):
    if np.isnan(var):
        return None
    else:
        return var
for q in x:
    result = skip(q)
    if result != None:
         var(result)
    print q
我知道

这个问题有多种答案,但我发现continue这就是我正在寻找的:

将 numpy 导入为 NP

x = [1, 2, np.nan, 4]
def skip(var):
    return np.isnan(var)

for q in x:
    if skip(q)
       continue
    print q

最新更新