您可以编写简单的函数,将您的“类型”与相应的验证器匹配,然后使用all() 检查给定数组匹配格式的每个元素:
def validate(array, format):
if len(array) != len(format):
return False
validators = {
'string': lambda s: isinstance(s, str),
'number': lambda i: isinstance(i, (int, float)),
'symbol': lambda c: isinstance(c, str) and len(c) == 1,
'bool': lambda x: isinstance(x, bool)
}
return all(validators.get(fmt, lambda _: False)(el) for el, fmt in zip(array, format))
array_sample = ['aaa', 0, 'b', 10.0, False]
format_sample = ['string', 'number', 'symbol', 'number', 'bool']
result = validate(array_sample, format_sample)
如果要求严格,您可以使用常规 for 循环而不是 all():
...
for el, fmt in zip(array, format):
if not (fmt in validators and validators[fmt](el)):
return False
return True