【问题标题】:Why does it say this--> TypeError: 'bool' object is not iterable [closed]为什么会这样说--> TypeError: 'bool' object is not iterable [关闭]
【发布时间】:2015-07-08 11:21:26
【问题描述】:

内容只是一个文本文件

tokens = content.split()
topics = [e for (n, x) in enumerate(tokens) for (n2, x2) in enumerate(tokens) for (i, e) in enumerate(tokens) if any(x2.isdigit()) if '.' in x if re.findall('\D+', x) if n < i < n2]

我不明白我是如何遍历 bool 的,还有更简洁和更快的方法来理解这个列表吗?

【问题讨论】:

  • 如果您没有告诉我们您想要做什么,我们无法告诉您是否有更快/更好的方法来做某事。你能展示一个示例输入和你的预期输出吗?
  • 您可能应该包含一个重现问题并定义所有变量的 sn-p。
  • 这个表达式的目的是什么?

标签: python list list-comprehension


【解决方案1】:

你的问题来自 - any(x2.isdigit()) ,我猜 x2 是一个字符串,所以 x2.isdigit() 返回一个 bool ,你不能在上面使用 any() 函数。

尝试不使用 any() 函数来检查 x2 是否为数字 -

if x2.isdigit()

如果你要检查的是x2里面有没有数字,你可以试试-

if any(i.isdigit() for i in x2)

虽然我不知道你要做什么,所以无法检查其他逻辑是否好。

any() 函数用于 iterable(列表或生成器表达式等),以检查其中任何一个是否为 True。

【讨论】:

  • x2.isdigit() 如果字符串是数字,则返回 true。如果字符串中有任何数字,则 any(x2.isdigit()) 返回 true
  • 这也不是功课
  • 不,any(x2.isdigit()) 会导致您遇到错误。如果我添加了,请尝试第二个。
  • 谢谢,我没有看到你添加了。
  • 另外,代码需要永远运行,我打算做一堆这样的:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2021-08-08
相关资源
最近更新 更多