计算列表python中的不同数字

Ale*_*ann 1 python loops list

嘿家伙,所以这是我的第一年编程,我开始使用python.我对编程很了解,但我需要帮助解决这个问题.

我必须使用列表作为我的参数,然后返回列表中不同值的数量.问题中的示例列表是[1, 4, 1, 7, 6, 1, 4, 3],因此返回的值应为5.

现在我知道我解决它的方法可能不简洁或优雅,但如果有人可以帮助我并告诉我要改变什么,那么它的工作原理我会非常感激.

def count(mylist):
    newlist = []
    newlist.append(mylist[0])
    stor = False
    for i in mylist:
        stor = False
        for j in newlist:
            if j == i:
                stor == True
        if not stor:
            newlist.append(i)
    return newlist
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

用一个set()代替:

def count(myList):
    return len(set(myList))
Run Code Online (Sandbox Code Playgroud)

一个集合只能保存每个值的一个副本,因此将列表转换为集合具有删除所有重复项的便利副作用.结果集的长度是您正在寻找的答案.

使用集合是最有效的方法; 或者你也可以使用dict():

def count(myList):
     return len(dict.fromkeys(myList))
Run Code Online (Sandbox Code Playgroud)

由于它会为与键相关联的值保留空间,因此效率稍低.

如果您要使用的只是一个列表(效率最低),请使用not in否定成员资格测试:

def count(myList):
    unique = []
    for item in myList:
        if item not in unique:
             unique.append(item)
    return len(unique)
Run Code Online (Sandbox Code Playgroud)