【发布时间】:2020-10-03 19:23:14
【问题描述】:
我将一组在列表中找到的类型放在一起,然后将其转换为列表。
s = set()
for i in ['hungry', 'delicious', 'desserts']:
s.add(type(i))
l = list(s)
现在假设我想检查l 中的第一个元素是否为“字符串”。当我请求print(l[0]) 时,我得到<class 'str'> 作为输出。
但是当我询问l[0] == "<class 'str'>" 时,我得到False。当我问l[0] == 'str' 时也是一样。
我需要在代码中进行哪些更改才能显示True?
【问题讨论】:
-
您正在寻找
isinstance。 -
您正在将一个类与代表该类的字符串进行比较。
-
s包含类型,l也包含类型。所以你需要检查l[0] == str(类,不是字符串) -
l[0]不是字符串对象(它是type对象)。当你打印时,它的__str()__方法被调用,并返回字符串"<class 'str'>"。你可以例如测试l[0] == str,但如果您仍然可以访问提取类型的原始对象(例如'hungry'),那么您可以使用isinstance(foo, str)测试foo是否为字符串。
标签: python list types set boolean