如何计算特定数组中的distinct元素和puth不同值

时间:2014-05-12 05:19:09

标签: python arrays

Column是一个包含大约10000个值的数组,其中也包含重复值。我想要一个数组darray,它应该只包含不重复的不同值。我试图通过这个代码来做。但是darray的长度为0。break语句有一些问题。使用break我想从内部的两个循环中走出来但不是第三个循环。帮助我。

darray=[]
m=0

for d in range(0,length):
    f=0
    for r in range(d,length):
        if f==1:
            break
        for l in range(0,m):
            if column[r] == darray[l]:
                f=1
                break
            elif column[d] == column[r]:
                darray.append(column[d])
                m+=1
                f=1
                break


lent = len(darray)     
print lent;   

1 个答案:

答案 0 :(得分:0)

如果结果数组中的排序不相关,则可以使用集合:

lent=set(column) 

(或list(set(column))如果您需要结果实际上是列表)

否则,您可以使用set作为辅助数据结构来快速查看新数组是否已有元素。

s=set()
lent=[] 
for v in column:
    if v not in s:
        lent.append(v) 
        s.add(v) 

与天真解决方案的O(n ^ 2)(或更差)相比,这两者都是O(n log n)。