是否有任何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