嘿家伙,所以这是我的第一年编程,我开始使用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)
用一个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)