【问题标题】:How come I keep getting False when checking list item为什么我在检查列表项时总是得到 False
【发布时间】: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


【解决方案1】:

只需删除周围的引号:

l[0] == str

也可以。 'str' 只是另一个字符串,而不是类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2012-05-20
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多