繁体   English   中英

isinstance检查是否有任何变量具有特定的类

[英]isinstance check if any of the variables has a certain class

如果有任何参数是np.ndarray ,我有一个函数需要采取不同的路线。 我正在检查isinstance 但是我想知道是否有比使用列表理解和any方法更直观(更快)的方法:

def func(a, b):
    if any([isinstance(i, np.ndarray) for i in [a, b]]):
        ...
    else:
        ...

我已经尝试过:

if isinstance([a, b], np.ndarray):

但这不起作用,因为[a, b]是一个list ...

实际上,使用any是最Python的方式,因为它已在python中实现,如下所示:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

并且在遇到您的可迭代项中的True项后立即返回True ,因此最佳情况下的顺序为O(1),最坏情况下的顺序为O(n)。 关于isinstance()它是一个内置函数,并且是检查对象类型的Python方法。

另外,作为一种更加Python化的方式,您最好将生成器表达式传递给any生成器表达式,并让生成器函数按需生成项目,而不是列表理解并立即创建所有布尔值。

any(isinstance(i, np.ndarray) for i in [a, b])

正如@Padraic所说,如果您只处理两个项目,则最好的方法是使用or运算符:

if isinstance(a, np.ndarray) or isinstance(b, np.ndarray):
           # do stuff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM