Python 用有效的方法计算数组中的唯一元素

Python 用有效的方法计算数组中的唯一元素,python,Python,我无法发布比:(Python 3.6)更好的东西 但是我的老师说我的解决方案不是很有效,因为我把数据保存到数组a 嗯。。。他还说我应该在变量中保存一些东西,并永久地重写它 你知道这个案子吗 UPD “有效方式”-程序必须使用尽可能少的内存,并尽可能快地工作您可以将列表转换为一组(这将删除任何重复项)。集合的长度是原始列表中有多少唯一元素 例如: print(len(set(int(input()) for _ in range(int(input()))))) 这是我将如何做的,简单易懂,如果

我无法发布比:(Python 3.6)更好的东西

但是我的老师说我的解决方案不是很有效,因为我把数据保存到数组
a

嗯。。。他还说我应该在变量中保存一些东西,并永久地重写它

你知道这个案子吗

UPD


“有效方式”-程序必须使用尽可能少的内存,并尽可能快地工作

您可以将列表转换为一组(这将删除任何重复项)。集合的长度是原始列表中有多少唯一元素

例如:

print(len(set(int(input()) for _ in range(int(input())))))

这是我将如何做的,简单易懂,如果你的新。如果您担心性能,请不要担心。这是一个太小的程序,无法产生影响

N=int(input()) 
a=[] 
k=0
#Don't need to create tel here! as you set it later
for i in range(N):
    tel=int(input()) #creation of tel, not updating unless already defined
    if tel != a: #simple way of what you need
        a.append(tel)
        k+=1
print(k) 
如果要在内存完成后清除内存,请执行此操作。但我认为你需要有一个数组,而做的主要部分

N=int(input()) 
a=[] 
k=0
#Don't need to create tel here! as you set it later
for i in range(N):
    tel=int(input()) #creation of tel, not updating unless already defined
    if tel != a: #simple way of what you need
        a.append(tel)
        k+=1
a = []
print(k) 

我说过我们不能在这个任务中使用数组使用列表和数组memory@EgorRandomize不要大喊大叫。该解决方案不使用数组。@由于使用了错误的数据结构,请在极差中对原始解决方案进行优化。我提供的代码在内存和cpu方面都更加高效。你最好多加注意,并意识到你目前有限的知识。阅读关于集合数据结构和Python生成器的内容。@Gabriel我最初的解决方案当然无效!我要你找到解决办法。没人知道。我知道。特技人员给我设置“-”。可能重复@rwp编号。这是EGE考试的任务。关于最有效的算法。但人们把我的问题当成愚蠢学生的愚蠢问题。但我不是那么笨,我有一个非常重要的问题,所以没有人能解决它,但可以给我“-”。非常感谢你的帮助!
N=int(input()) 
a=[] 
k=0
#Don't need to create tel here! as you set it later
for i in range(N):
    tel=int(input()) #creation of tel, not updating unless already defined
    if tel != a: #simple way of what you need
        a.append(tel)
        k+=1
a = []
print(k)