【问题标题】:Check if my array follows a specific format检查我的数组是否遵循特定格式
【发布时间】:2020-09-27 02:12:52
【问题描述】:

我正在尝试在 python 中找出一种方法,使用循环来检查我的数组是否遵循格式

[string,number,symbol,string,number,symbol.......]

最简单的方法是什么?

【问题讨论】:

  • 使用assert (),如果格式不正确,它会给你一个断言错误。
  • 什么是符号?能举个简单的例子吗?

标签: python arrays string loops


【解决方案1】:

您可以编写简单的函数,将您的“类型”与相应的验证器匹配,然后使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 2014-12-29
    • 2022-01-17
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多