检查三个列表中的公共元素:它检查相同的列表

时间:2017-10-23 13:34:27

标签: python list

我需要输入三个列表并进行布尔检查,检查所有列表是否有共同元素。到目前为止,代码的主要部分如下所示:

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。我的代码出了什么问题?

2 个答案:

答案 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