2017-03-08 106 views
-4

我想检查数组列表中是否有重复元素大于0。检查Python中的列表中是否有重复值(> 0)

if [1,0,0,0,1,2] = true 

if [0,0,0,0,0,0] = false 

我该如何得到这个结果?

+0

为什么第二种情况是假的?你甚至想问什么? – anekix

+3

可能重复[在列表中查找并列出重复项?](http://stackoverflow.com/questions/9835762/find-and-list-duplicates-in-a-list) – Bobby

+0

@anekix我想检查重复超过0值的元素。 – Chathurika

回答

-1

使用字典来保持元素的数量,如果一个元素出现两次(这不是零),那么你的答案是真实的,所以只是从循环中断开。

试试这个:

l = [0,0,0,0] 
dic = {} 
flag = False 
for i in l: 
    if i in dic: 
     dic[i]+=1 
     if dic[i]>1 and i!=0: 
      flag = True 
      break 
    else: 
     dic[i] = 1 
print flag 

注:更好的办法是有,但这个是非常简单明白。

0

我猜OP只想处理自然数。试试这个:

def is_duplicated_natural_numbers(input): 
    # make it >0 
    natural_numbers_list = list(filter(lambda x: x > 0, input)) 

    # remove duplicates 
    set_list = list(set(natural_numbers_list)) 

    # if natural_numbers_list == set_list, no natural numbers duplicates 
    return natural_numbers_list != set_list 

print(is_duplicated_natural_numbers([1,0,0,0,1,2])) # True 
print(is_duplicated_natural_numbers([0,0,0,0,0,0])) # False 
print(is_duplicated_natural_numbers([1,2,3,4,5,1])) # True 
相关问题