以有效的方式计算数组中的唯一元素

时间:2018-05-23 16:42:31

标签: python

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

N=int(input()) #count of input elements
a=[] #buffer
k=0 #counter
tel=0 #next number
for i in range(N):
    tel=int(input())
    if(not tel in a):
        a.append(tel)
        k+=1
print(k) #count of unique elements

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

嗯......他还说我应该保存一些变量并永久重写它。

你知道这种情况吗?

UPD

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

2 个答案:

答案 0 :(得分:0)

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

示例:

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

答案 1 :(得分:0)

这就是我如何做到这一点,如果你的新手简单易懂。如果你担心表现,那就不行了。它太小的程序无法发挥作用。

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)