Python函数使用函数检查公共元素

时间:2016-09-18 19:40:55

标签: python

目标是获取两个列表,看看是否有任何元素匹配,以及它们是否每次都添加1来计数。第一个列表是5个元素的列表,第二个列表是用户输入。它不起作用,我做错了什么?它必须使用函数来完成,请帮助。

userask = input("Enter a few numbers to try win the lotto:      ")


def count_correct(list1,list2):


    count = 0
    for r in list2:
        if list1 in list2:
                count += 1

    return count

3 个答案:

答案 0 :(得分:1)

首先需要按空格分割数字(如您所愿)并转换为列表:

userask = input("Enter a few numbers to try win the lotto:      ")
userlist = userask.split()

然后你可以使用像这样的集合来做到这一点:

result = len(set(list1) & set(userlist))

只会计算非重复的常用内容或修复您的for循环,如下所示:

def count_correct(list1,list2):

    count = 0
    for r in list2:
        if r in list1:
            count += 1

    return count

答案 1 :(得分:0)

要实施计数功能,您可以将sumgenerator expression一起使用。

def count_correct(list1, list2):
     # each True in the generator expression is coerced to int value 1
     return sum(i in list1 for i in list2)

注意,使用将消除列表中的重复项(如果有),这将导致错误的结果。

要捕获您可以执行的输入列表:

userask = input("Enter a few numbers to try win the lotto (separated by spaces):      ")

list1  = map(int, userask.split())

答案 2 :(得分:-2)

这里的代码不完整。但我认为这种改变应该对你有帮助。

请勿使用if list1 in list2:,请使用if r in list2: