有没有一种方法可以检查列表/字典中是否存在特定数据类型的实例,而无需显式检查每个元素/键?
我怀疑答案是否定的。但是,如果确实存在,我想它会类似于您可以使用in
运算符搜索特定元素/键的方式,如下所示:
3 in [1, 2, 3] # => True
除非您要检查数据类型的实例,而不是某个特定值,例如:
int in [1,"a", 3.4] # => True
有任何想法吗?
好吧in
,实际上是的语法糖__contains__
,它确实在列表的内容上进行了迭代。
如果您想使用in
来检查类型;您可以实现自己的数据结构(子类list
)并重写__contains__
以检查类型:
class MyList(list):
def __contains__(self, typ):
for val in self:
if isinstance(val, typ):
return True
return False
x = MyList([1, 2, 'a', 3])
print float in x # False
print str in x # True
您还可以利用any函数:
def __contains__(self, typ):
return any(isinstance(val, typ) for val in self)
print int in MyList([1, "a", 3.4]) # True
print int in MyList(["a", 3.4]) # False
至于是否在不检查每个元素的情况下是否可行-不,不是。在最坏的情况下,您最终会检查每个元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句