gpt4 book ai didi

python - Python中区分 'character'和 'numeric'数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:00 25 4
gpt4 key购买 nike

我想知道在 Python 中是否有一种简单的方法来区分字符和数字数据类型(例如 int/double/float 等)。理想情况下,我希望能够区分标量和列表。

简而言之,我希望能够编写一个函数 easy_type 来执行以下操作:

>>> easy_type(["hello", "world"])  
"character"
>>> easy_type("hello")
"character"
>>> easy_type(['1.0', '0.0'])
"numeric"
>>> easy_type([0, 1, 2])
"numeric"
>>> easy_type(0.100)
"numeric"

最佳答案

由于您有多种类型的数据,您可能希望使用递归函数获取单个项目的类型,就像这样

def get_type(data):
if isinstance(data, list):
types = {get_type(item) for item in data}
# If all elements of the list are of the same type
if len(types) == 1:
return next(iter(types))
# if not, return "multiple"
else:
return "multiple"
elif isinstance(data, str):
# Check if the string has only numbers or it is a float number
return "numeric" if data.isdigit() or is_float(data) else "character"
elif isinstance(data, int) or isinstance(data, float):
return "numeric"

辅助函数is_float是这样定义的

def is_float(data):
try:
float(data)
return True
except ValueError:
return False

和测试,

assert(get_type(["hello", "world"]) == "character")
assert(get_type("hello") == "character")
assert(get_type(['1.0', '0.0']) == "numeric")
assert(get_type([0, 1, 2]) == "numeric")
assert(get_type(0.100) == "numeric")

关于python - Python中区分 'character'和 'numeric'数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com