嘿,伙计们,这是我第一年编程,我从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
使用^{} 代替:
一个集合将只保存每个值的一个副本,因此将列表转换为集合有一个方便的副作用,即删除所有重复项。结果集的长度就是您要寻找的答案。在
{a2也是最有效的方法:
^{pr2}$因为它将为与键相关联的值保留空间,所以效率稍低。在
如果只想使用列表(效率最低),请使用
not in
负成员身份测试:首先,你的程序的一个固定版本
这里有一些建议:
stor
。两行之后再做一次。在break
,这样可以加快速度(不需要进行不必要的比较)newlist
可以初始化为空列表,而不附加第一项。算法保持有效(内循环第一次迭代次数为零)下面是代码示例:
^{pr2}$更优雅(和pythonic):使用
in
-语法;)基本上,
item in something_iterable
返回true,如果item
可以在something_iterable
中找到。大多数项目集合都是iterable(例如列表、集合、字符串。。。'a' in 'abc'
返回true)最具Python式的方式,但没有for/while循环:
请查阅其他答案以获得解释。在
您可以在此处使用集合:
关于
^{pr2}$set
的帮助:使用for循环:
再看一下^{} ,它返回
dict
的子类,其中包含元素被重复的次数:相关问题 更多 >
编程相关推荐