gpt4 book ai didi

python - 如何检查列表中的数据类型,无论列表有多深

转载 作者:行者123 更新时间:2023-12-01 00:31:01 28 4
gpt4 key购买 nike

我有一个列表,我想检查其中的数据类型,无论列表有多深。我首先想到这样做:

all([isinstance(x, (int, float, str, bytes, list, tuple, set, dict)) for x in l])

但它似乎不起作用:

>>> l = [1, 2, 3, 4, [bytearray(b'1234')]]
>>> all([isinstance(x, (int, float, str, bytes, list, tuple, set, dict)) for x in l])
True

还有其他方法可以做到这一点吗?一个有效吗?

最佳答案

您可以使用以下展平函数:

def flatten(s):
for e in s:
if isinstance(e, (tuple, list)):
yield from flatten(e)
else:
yield e

l = [1, 2, 3, 4, [bytearray(b'1234')]]

result = all(isinstance(x, (int, float, str, bytes, list, tuple, set, dict)) for x in flatten(l))
print(result)

输出

False

这种方法的优点是您不必检查整个列表,all如果发现False,则会短路。

关于python - 如何检查列表中的数据类型,无论列表有多深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176635/

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