使用由布尔函数Python组成的列表创建OR逻辑函数



我想写一个函数,检查Trueboolena语句是否在all_vals内。如果有True值,则代码将为yes。如果没有,则代码输出no,本质上创建一个或语句。下面的代码不起作用。我该如何修改它,使其获得下面的预期输出?

def vals(all_vals):
for x in all_vals:
if True in all_vals:
print('yes')
else:
print('no')

a = [True, True, True]
b = [True, False, True, True, False]
c = [False, False]
d = [True, False]
vals([a,b,c,d]) 

预期输出:

yes
yes
no
yes

您需要的不是:if True in all_vals:而是if True in x:,如下所示:

def vals(all_vals):
for x in all_vals:
if True in x:
print('yes')
else:
print('no')

a = [True, True, True]
b = [True, False, True, True, False]
c = [False, False]
d = [True, False]
vals([a,b,c,d]) 

此外,您还可以使用来持久地缩短代码

vals = lambda all_vals: print("n".join(['yes' if True in i else 'no' for i in all_vals]))
a = [True, True, True]
b = [True, False, True, True, False]
c = [False, False]
d = [True, False]
vals([a,b,c,d]) 

输出:

yes
yes
no
yes
def vals(all_vals):
for x in all_vals:
if True in x: # <--- Your typo here
print("yes")
else:
print("no")

a = [True, True, True]
b = [True, False, True, True, False]
c = [False, False]
d = [True, False]
vals([a, b, c, d])

最新更新