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
def checkType(a_list):
for element in a_list:
if isinstance(element, int):
print("It's an Integer")
if isinstance(element, str):
print("It's an string")
if isinstance(element, float):
print("It's an floating number")
numbers = [1, 2, 3]
checkType(numbers)
3条答案
按热度按时间ghhkc1vu1#
in
实际上是__contains__
的语法糖,它对列表的内容进行迭代。如果您希望使用
in
来检查类型;你可以实现你自己的数据结构(子类化list
)并覆盖__contains__
来检查类型:您还可以利用any函数:
至于在不检查每个元素的情况下是否可行-不,不行。在最坏的情况下,您最终会检查每个元素。
jmo0nnb32#
我想你可以使用isinstance(element,type)。
我做了一个函数:
这将输出:
nfg76nw03#
你可以这样做,这将是你的输入列表,你可以检查它的迭代,我通过了两次