我需要输入三个列表并进行布尔检查,检查所有列表是否有共同元素。到目前为止,代码的主要部分如下所示:
def in_all_three(listA, listB, listC):
for x in listA:
if x in listB and x in listC:
return True
else:
return False
我不知道为什么,但如果列表相同则只返回True。我的代码出了什么问题?
答案 0 :(得分:4)
为此,您可以使用sets的交集。
proc sql;
create table want as
select t1.user_id
,sum(case when t3.business_id=t2.business_id then 1 else 0 end)/count(*) as percentage
from users t1
inner join reviews t2
on t1.user_id=t2.user_id
inner join reviews t3
on t1.friend=t3.user_id
group by t1.user_id
;
quit;
正如@ Reti43建议的那样,由于下面评论中描述的原因,您可以def check_common_element(listA, listB, listC):
common_elements = set.intersection(set(listA), set(listB), set(listC))
if common_elements:
return True
else:
return False
# Test case 1: Testing when there is a common value among lists
list_a = [1,2,3]
list_b = [1,5,6]
list_c = [1,8,9]
print(check_common_element(list_a,list_b,list_c))
# output: True
# Test case 2: Testing when there is no common value among lists
list_a = [1,2,3]
list_b = [1,5,6]
list_c = [7,8,9]
print(check_common_element(list_a,list_b,list_c))
# output: False
代替return bool(common_elements)
作为更好的选择。在这种情况下,修改后的函数将如下所示:
if-else
答案 1 :(得分:1)
逻辑上,只有在选中所有项目且未找到匹配项后,才需要返回False。 为了做到这一点你需要返回错误;循环完成后。
systemctl restart avahi-daemon