如何解决Lambda if else语句在参数等于1时返回True
我正在努力调试代码,我认为我面临的问题是,当参数中为1时,无论它是否是正确的键,它都将返回True。有办法阻止这种情况发生吗?
def reduce_search(L,x): #L is a list,and x is the key to find in the list
#FIX
return reduce(lambda y,z: True if (y == True or z == True) else (True if (y == x or z == x) else False),False,L) #NOTE: not using the imported reduce method
def test_reduce_search():
assert reduce_search([1,3,5,4,2,9,7],2) == (2 in [1,7]) #return true
assert reduce_search([1,99) == (99 in [1,7]) #return false
解决方法
这是因为1 == True
。
我想你只是想要
from functools import reduce
def reduce_search(L,x):
return reduce(lambda acc,item: item == x or acc,L,False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。