这是我的函数,它会引发这个错误。
TypeError: 'bool' object is not iterable
排成一行:
if all(v == 0):
我的目标是在这一行中检查是否所有值都等于Zero。
以下是我的方法:
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()
我不明白的是,我实际上在检查这一行是什么,因为我显然没有检查我的列表。
编辑代码:
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 )
发布于 2022-07-08 12:22:35
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
发布于 2022-07-08 12:05:12
all
方法需要一个可迭代的。
在您的示例中,v
是浮点数,v == 0
是布尔值。因此,您试图调用all
来获取一个布尔值,这是不允许的,并导致您要得到的TypeError
。
若要检查所有值是否为0,可以以下列方式进行:
all(v == 0 for v in alist)
https://stackoverflow.com/questions/72911077
复制相似问题