首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决TypeError:'bool‘对象在Python中是不可迭代的

如何解决TypeError:'bool‘对象在Python中是不可迭代的
EN

Stack Overflow用户
提问于 2022-07-08 12:01:05
回答 2查看 154关注 0票数 0

这是我的函数,它会引发这个错误。

代码语言:javascript
运行
复制
   TypeError: 'bool' object is not iterable

排成一行:

代码语言:javascript
运行
复制
   if all(v == 0):

我的目标是在这一行中检查是否所有值都等于Zero。

以下是我的方法:

代码语言:javascript
运行
复制
def main():


  def checklist( thelist ):
    if len(thelist) > 2:
        for v in thelist: 
            if v < 0.0: 
                print ("One negative")
            if all(v == 0):
                print( "All zero")
            else:
                print("All good")  

alist = [0.0, 0.1, 0.3, 0.0]
checklist( alist ) 




if __name__ == '__main__':
 
# Calling main() function
    main()

我不明白的是,我实际上在检查这一行是什么,因为我显然没有检查我的列表。

编辑代码:

代码语言:javascript
运行
复制
  def checklist( thelist ):
    if len(thelist) > 2:
        for v in thelist: 
            if v < 0.0: 
                print ("One negative")
        if all(vs == 0 for vs in thelist):
            print( "All zero")
        else:
            print("All good")  

alist = [0.0, -0.1, 0.3, 0.0]
checklist( alist ) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-08 12:22:35

代码语言:javascript
运行
复制
def main():


  def checklist( thelist ):
    if len(thelist) > 2:
        if all(vs == 0.0 for vs in thelist):
            print( "All zero")
        if any(v < 0.0 for v in thelist): 
            print ("At least one negative")
        else:
            print("All good")  

alist = [-1.0, 1.0, 1.0, 1.0]
checklist( alist ) 

解决了!感谢@luk2302 2302

票数 1
EN

Stack Overflow用户

发布于 2022-07-08 12:05:12

all方法需要一个可迭代的。

在您的示例中,v是浮点数,v == 0是布尔值。因此,您试图调用all来获取一个布尔值,这是不允许的,并导致您要得到的TypeError

若要检查所有值是否为0,可以以下列方式进行:

代码语言:javascript
运行
复制
all(v == 0 for v in alist)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72911077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档